04读书笔记之活动的启动模式
2017-07-11 20:11
357 查看
一共有四种:
可以在AndroidManifest.xml中通过给标签指定android:launchMode属性来选择启动模式。
不管你点击多少次按钮都不会再有新的打印信息出现,因为目前firstActivity已经处于返回栈的栈顶,每当想要再启动一个firstActivity时都会直接使用栈顶的活动,因此firstActivity也只会有一个实例,仅按一次Back键就可以退出程序。
注意:当firstActivity并未处于栈顶位置时,这时再启动firstActivity,还是会创建新的实例的。
假设我们的程序中有一个活动是允许其他程序调用的,如果我们想实现其他程序和我们的程序可以共享这个活动的实例,如何实现?
使用前三种启动模式肯定是做不到的,因为每个引用程序都有自己的返回栈,同一个活动在不同的返回栈中入栈时必须是创建了新的实例,而使用singleInstance模式就可以解决。
在这种模式下会有一个单独的返回栈来管理这个活动,不管是哪个应用程序来访问这个活动,都共用的同一个返回栈,解决共享活动的实例的问题。
二、随时随地退出程序
可以再销毁所有活动的代码后面再加上杀掉当前进程的代码,以保证程序完全退出,杀掉进程的代码如下所示:
android.os.Process.killProcess(android.os.Process.myPid());
其中,killProcess()方法用于杀掉一个进程,它接收一个进程id参数,我们可以通过myPid()方法来获得当前程序的进程id。需要注意的是,killProcess()方法只能用于杀掉当前的程序的进程,不能杀掉其他进程。
三、启动活动的最佳写法
启动活动的方法相信你已经非常熟悉了,首先通过Intent构建出当前的意图,然后调用startActivity()或startActivityForResult()方法将活动启动起来,如果有数据需要从一个活动传递到另一个活动,也可以借助intent来完成。
可以在AndroidManifest.xml中通过给标签指定android:launchMode属性来选择启动模式。
一、standard
standard是活动默认的启动模式,在不进行显式指定的情况下,所有活动都会自动使用这种启动模式。 在standard模式下,每当启动一个新的活动,它就会在返回栈中入栈,并处于栈顶的位置。 对于使用standard模式的活动,系统不会在乎这个活动是否已经在返回栈中存在,每次启动都会创建该活动的一个新的实例。
二、singleTop
当活动的启动模式指定为singleTop,在启动活动时如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它,不会再创建新的活动实例。不管你点击多少次按钮都不会再有新的打印信息出现,因为目前firstActivity已经处于返回栈的栈顶,每当想要再启动一个firstActivity时都会直接使用栈顶的活动,因此firstActivity也只会有一个实例,仅按一次Back键就可以退出程序。
注意:当firstActivity并未处于栈顶位置时,这时再启动firstActivity,还是会创建新的实例的。
三、singleTask
每次启动该活动时系统首先会在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例,并把在这个活动之上的所有活动统统出栈,如果没有发现就会创建一个新的活动实例。四、singleInstance
这个模式是四种启动模式中最特殊也最复杂的一个了。假设我们的程序中有一个活动是允许其他程序调用的,如果我们想实现其他程序和我们的程序可以共享这个活动的实例,如何实现?
使用前三种启动模式肯定是做不到的,因为每个引用程序都有自己的返回栈,同一个活动在不同的返回栈中入栈时必须是创建了新的实例,而使用singleInstance模式就可以解决。
在这种模式下会有一个单独的返回栈来管理这个活动,不管是哪个应用程序来访问这个活动,都共用的同一个返回栈,解决共享活动的实例的问题。
活动的最佳实践
一、知晓当前是在哪个活动。二、随时随地退出程序
可以再销毁所有活动的代码后面再加上杀掉当前进程的代码,以保证程序完全退出,杀掉进程的代码如下所示:
android.os.Process.killProcess(android.os.Process.myPid());
其中,killProcess()方法用于杀掉一个进程,它接收一个进程id参数,我们可以通过myPid()方法来获得当前程序的进程id。需要注意的是,killProcess()方法只能用于杀掉当前的程序的进程,不能杀掉其他进程。
三、启动活动的最佳写法
启动活动的方法相信你已经非常熟悉了,首先通过Intent构建出当前的意图,然后调用startActivity()或startActivityForResult()方法将活动启动起来,如果有数据需要从一个活动传递到另一个活动,也可以借助intent来完成。
相关文章推荐
- Android活动启动模式
- Android活动Acitivity启动模式之singleTop
- 活动的四种启动模式
- Android教程 -04 启动其它Activity,静态工厂设计模式传递数据
- 活动的启动模式汇总
- Android中Activity和task,活动亲和力,启动模式,活动状态以及生命周期,激活钝化
- 活动的启动模式
- Android基础_活动_启动模式
- Android活动的启动模式
- 活动的启动模式
- Android活动Acitivity启动模式之singleTask
- mongoDB的读书笔记(04)_【Replica】(05)_初探Replica set副本集的搭建 By Test模式
- 活动的启动模式
- Android笔记(八)活动的启动模式
- Android中活动的四种启动模式
- Android活动Acitivity启动模式之standard
- 活动的启动模式
- android-活动的启动模式
- 活动的启动模式
- 活动的四种启动模式