`
- 浏览:
550066 次
- 性别:
- 来自:
武汉
-
Activity 的加载模式
1) 概念:
加载模式决定以哪种方式启动一个跳转到原来某个Activity实例;
2) 起因:
在Android 开发中,activity 之间的跳转可能需要有多种方式,有时是普通的生成一个新实例,有时希望跳转到原来某个activity实例,而不是生成大量的重复的activity;
3) 加载模式的种类:
在android 中,activity 有四种加载模式:standard ,singleTop,singleTask,singleInstance;
4) 配置:
直接修改AndroidMainfest.xml 文件,例如:
<activity android:name=”.NewActivity” android:launchMode=”singleTask”>
</activity>
5) 四种加载模式的介绍:
a) Standard : 系统默认模式,一次跳转即会生成一个新的实例;
b) SingleTop : 和 standard 类似,唯一的区别就是当跳转的对象是位于栈顶的activity时,程序将不会生成一个新的activity实例,而是直接跳到现在存于栈顶的那个activity实例;
c) SingleTask: singleTask 模式和后面的singleInstance 模式都只是创建一个实例;该模式下,无论调转的对象是不是位于栈顶的activity,程序都不会生成一个新的实例(前提是该栈中已经 存在了这个实例);
提示:一般不要将除开始页面的其他页面设置为singleTask 模式;
d) SingleInstance: activity独占一个task(可以理解为进程),独占一个task 的activity 可以相当于是一个应用,这个应用与其他的activity是独立的,他有自己的上下文activity;
例如:现有三个activity,a1,a2,a3, a2设置为singleInstance 模式,那么调转关系如下:a1-a2-a3, 在 a3中按返回,由于a2 位于一个独立的task中,它不数据a3 的上下文activity ,所以此时将直接返回得到 a1 ,a1 再返回程序并没有结束,而是得到 a2 , 再返回就结束了程序;
e) 四种加载模式的主要区别:
所属Task 的区别
一般情况下,standard 和 singleTop 两种模式的的资源在同一个Task里面,除非Intent包含了参数 FLAG_ACTIVITY_NEW_TASK ,则目标activity启动会到新的Task里面
是否允许多个实例的区别:
Starndrd 和 singleTop 可以允许有多个实例,并可以位于不同的task中;singleTop要求 activity Stack 栈顶已经要目标acvitivy实例,有就不创建,没有就创建
SingleTask 和 singleInstance 只产生一个实例,并且是task的根元素
是否允许其他Activity存在于本Task内的区别:
SingleInstance 独占一个Task ,其他Activity 均不能村在于此Task中,如果它启动一个新的Activity,不管新的Activity的launch mode 如何,新的Activity都将运行于其他Task里;
另外三种模式则可以和其他Activity共存;
每次是否生成新实例:
Standard : 每次都生成一个新的Activity实例;
singleTop :的Activity如果在Task 的Activity Stack 顶部则不生成新的实例,直接使用,否则生成一个新的实例;
singleInstance :是其所在的Task的Activity 的Activity Stack 里的唯一的Activity实例,每次都会被重用;
singleTask :如果在Task 的Activity Stack 的顶部,则接收intent,否则会被丢弃,但仍然会返回前台;
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
Activity加载模式demo
区分Activity的四种加载模式。在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity。可能会希望跳转到原来某个Activity实例,而不是产生大量重复的Activity。
主要介绍了Android编程之四种Activity加载模式,简要分析了Android编程中涉及的Activity的四种加载模式,具有一定参考借鉴价值,需要的朋友可以参考下
Android Activity 加载模式 测试
Android系统中Activity的四种加载模式.pdf
ActivityTask是怎么进行设计的,以及Activity四种加载模式。
加载一个Activity肯定不会像加载一般的类那样,因为activity作为系统的组件有自己的生命周期,有系统的很多回调控制,所以自定义一个DexClassLoader类加载器来加载插件中的Activity肯定是不可以的。 首先不得不了解...
主要介绍了Android开发中Activity的生命周期及加载模式详解的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下
(2)Android动态加载APK文件(代理模式) (3)Hook技术动态加载APK文件中的Activity 二、Android 动态加载dex文件 1.反射方式加载(较麻烦,不介绍),需要反射出具体的方法等 2.接口编程的方式加载(以下重点介绍...
Android以Java为编程语言,从接口到功能,都有层出不穷的变化,其中Activity等同于J2ME的MIDlet,一个 Activity 类(class)负责创建视窗(window),一个活动中的Activity就是在 foreground(前景)模式,背景运行...
这种方法打破了传统的Android UI设计模式,提供了一种更加灵活且高效的开发方式。通过将JavaScript与原生Android代码相结合,开发者可以实现更复杂的用户界面逻辑,同时保持对原生功能的完全控制。 该方法的核心...
疯狂android讲义第四章4.3节源代码,Activity的生命周期和加载模式
Android 的MVVM模式:View 在 大多情况下是指 Activity,也因为很多操作需要用到Context,Activity也充当 Controller 的角色,很多人喜欢把逻辑写在Activity中也是这个原因。在我眼里,MVVM模式解读应该是 ...
两分钟彻底让你明白Android Activity生命周期(图文)! Android 图形系统剖析 Android 立体效果图片 NDK动态库的调用 Android 姿态传感器 Android 很酷的图像旋转 Android 添加音频 在Android中实现多线程断点下载 ...
Android以Java为编程语言,使接口到功能,都有层出不穷的变化,其中Activity等同于J2ME的MIDlet,一个 Activity 类(class)负责创建视窗(window),一个活动中的Activity就是在 foreground(前景)模式,背景运行...
一、Activity的生命周期 首先,我们来了解一下Activity典型的生命周期 一个Activity从启动到结束会以如下顺序经历整个生命...在这个方法中,可以做一些初始化工作,比如调用setContentView去加载界面布局资源,初始化
[使用Android Stuido导入项目](Android Studio.md) APK动态加载框架(DL)解析 DL 2.0的新特性 支持多进程模式,插件可以运行在单独的DL进程中(代码在lab分支) 支持插件中的so库(代码在dev分支) DL支持的功能 ...
第1章 Activity的生命周期和启动模式 1 1.1 Activity的生命周期全面分析 1 1.1.1 典型情况下的生命周期分析 2 1.1.2 异常情况下的生命周期分析 8 1.2 Activity的启动模式 16 1.2.1 Activity的LaunchMode 16 ...