一、何为加载模式
在android的多activity开发中,activity之间的跳转可能需要有多种方式,有时是普通的生成一个新实例,有时希望跳转到原来某个activity实例,而不是生成大量的重复的activity。加载模式便是决定以哪种方式启动一个跳转到原来某个Activity实例。
二、加载模式有哪些以及如何配置
1、在android里面,activity有四种加载模式:standard,<wbr>singleTop,<wbr>singleTask,<wbr>singleInstance 。详细介绍在后面。</wbr></wbr></wbr>
<wbr></wbr>
2、配置方法
直接修改AndroidManifest.xml文件,如要给一个名为Act1的activity指定其加载模式为singleTask,只需添加以下语句:
<activity android:name="Act1"<wbr>android:launchMode="singleTask"></wbr>
</activity>
<wbr></wbr>
三、四种加载模式介绍
1、standard :系统的默认模式,一次跳转即会生成一个新的实例。假设有一个activity命名为Act1,执行语句:
<wbr><wbr><wbr><span style="WHITE-SPACE: pre">startActivity(new Intent(</span>Act1<span style="WHITE-SPACE: pre">.this,<wbr></wbr></span>Act1<span style="WHITE-SPACE: pre">.class));</span></wbr></wbr></wbr>
后Act1将跳转到另外一个Act1,也就是现在的栈里面有 Act1 的两个实例。按返回键后你会发现仍然是在Act1(第一个)里面。
2、singleTop:singleTop 跟standard 模式比较类似。唯一的区别就是,当跳转的对象是位于栈顶的activity(应该可以理解为用户眼前所看到的activity)时,程序将不会生成一个新的activity实例,而是直接跳到现存于栈顶的那个activity实例。拿上面的例子来说,当Act1 为<wbr>singleTop 模式时,执行跳转后栈里面依旧只有一个实例,如果现在按返回键程序将直接退出。这个貌似用得比较少。</wbr>
3、singleTask:<wbr>singleTask模式和后面的singleInstance模式都是只创建一个实例的。在这种模式下,无论跳转的对象是不是位于栈顶的activity,程序都不会生成一个新的实例(当然前提是栈里面已经有这个实例)。我觉得这种模式相当有用。。在以后的多activity开发中,经常会因为跳转的关系导致同个页面生成多个实例,这个在用户体验上始终有点不好,而如果你将对应的activity声明为<wbr>singleTask 模式,这种问题将不复存在。不过前阵子好像又看过有人说一般不要将除开始页面的其他页面设置为<wbr>singleTask 模式。。原因暂时不明,哪位知道的可以请教下。</wbr></wbr></wbr>
4、singleInstance: 看网上的解释好像都比较复杂。刚开始也没怎么明白这种模式,只知道它用的也不多。后来仔细看了网上的解释,稍微有些懂了。就按我的理解解释下。设置为<wbr><span style="FONT-SIZE: 14px">singleInstance 模式的 activity 将独占一个task(感觉task可以理解为进程),独占一个task的activity与其说是activity,倒不如说是一个应用,这个应用与其他activity是独立的,它有自己的上下文activity。拿一个例子来说明吧:</span></wbr>
现在有以下三个activity: Act1、Act2、Act3,其中Acti2 为<wbr></wbr>singleInstance 模式。它们之间的跳转关系为: Act1 -- Act2 -- Act3 ,现在在Act3中按下返回键,由于Act2位于一个独立的task中,它不属于Act3的上下文activity,所以此时将直接返回到Act1。这就是singleInstance模式,不知道解释清楚了没。。
四、结语
一般的书籍都没有谈过activity的这四种加载模式,但是感觉了解一下这方面的知识还是挺有用的,也许在以后的开发中就会用到,特别是对于 singleTask 模式,它能有效地改善你的软件的用户体验,让软件的操作更加人性化些。额,就至此为此吧。。
相关推荐
activity的四种加载模式:<!-- 不写的话也默认是standard --> <!-- standard表示每执行一次startactivity就新建一个实例 singleTop表示每次执行startactivity时,如果当前activity在taskstack的顶端,则不...
区分Activity的四种加载模式。在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity。可能会希望跳转到原来某个Activity实例,而不是产生大量重复的Activity。
Activity加载模式demo
通过案例深度解析activity的四种加载模式,深度分析Task栈。
ActivityTask是怎么进行设计的,以及Activity四种加载模式。
该文档详细介绍了activity在系统栈中的内存分配、加载模式及手动管理activity,同时还包含了相关样例。希望对读者有帮助。
Android系统中Activity的四种加载模式.pdf
NULL 博文链接:https://lowry.iteye.com/blog/793219
主要介绍了Android编程之四种Activity加载模式,简要分析了Android编程中涉及的Activity的四种加载模式,具有一定参考借鉴价值,需要的朋友可以参考下
本文给大家介绍Activity的生命周期,如果大家学习过iOS的小伙伴的话,Activity的生命周期和iOS中ViewController的生命周期非常类似。生命周期,并不难理解。一个人的生命周期莫过于生老病死,花儿的生命周期就是花...
加载一个Activity肯定不会像加载一般的类那样,因为activity作为系统的组件有自己的生命周期,有系统的很多回调控制,所以自定义一个DexClassLoader类加载器来加载插件中的Activity肯定是不可以的。 首先不得不了解...
Android Activity 加载模式 测试
(3)Hook技术动态加载APK文件中的Activity 二、Android 动态加载dex文件 1.反射方式加载(较麻烦,不介绍),需要反射出具体的方法等 2.接口编程的方式加载(以下重点介绍),只需要反射出具体的类即可,转换成接口...
当使用Intent跳转至某个目标Activity,需要根据目标Activity的加载模式来加载。 Activity一共有以下四种launchMode: 1.standard:默认,每次使用Intent跳转到目标Activity时都创建一个新的实例。坏处是每次进入都要...
该方法的核心在于利用Android的WebView组件,它允许在原生应用中加载并显示网页。通过在WebView中执行JavaScript代码,开发者可以轻松地操作DOM元素、处理用户输入事件,并与原生Activity进行通信。这种交互可以通过...
一、Activity的生命周期 首先,我们来了解一下Activity典型的生命周期 一个Activity从启动到结束会以如下顺序经历整个生命...在这个方法中,可以做一些初始化工作,比如调用setContentView去加载界面布局资源,初始化
Android以Java为编程语言,从接口到功能,都有层出不穷的变化,其中Activity等同于J2ME的MIDlet,一个 Activity 类(class)负责创建视窗(window),一个活动中的Activity就是在 foreground(前景)模式,背景运行...
疯狂android讲义第四章4.3节源代码,Activity的生命周期和加载模式