从0开始学Android之启动模式
说了生命周期,那Android的启动模式有四种,你都了解吗?
我接下来介绍一下这四种呀。
APP新创建之后会有一个任务栈。任务栈采用后进先出的形式。每新启动一个Activity,此Activity便在栈顶,原有Activity则会被压入栈内。
启动模式是每个Activity在栈中以怎样的形式存在。
启动模式在图下中配置一:默认模式(standard)
四个Activity的启动模式都是默认模式(standard),启动顺序A-B-C-D,则在任务栈的情况是图一的情况。
此时如果D启动B的话,则B重新oncreate()创建一个实例在栈顶,任务栈情况是图二。
它会不断的去创建新Activity的实例,重复的在栈内出现。
按返回键的时候则依次会走B-D-C-B-A退出程序。二:singleTop模式
此模式只判断启动的Activity是否在栈顶,如果不在栈顶则重新创建,存在则不重新存在。
四个Activity:A,C,D是默认启动模式,B是singTop启动模式。
启动A-B-C-D在任务栈情况如图一
此时D启动B,则在任务栈情况如图二,因为B不在栈顶,则会创建新的Activity。
按返回键返回Activity的情况则是
按返回键的时候则依次会走B-D-C-B-A退出程序。
三:singleTask模式
它是检测整个Activity中是否有此Activity。有则不重新创建,并且把此Activity以上的Activity都销毁。
四个Activity:A,C,D是默认启动模式,B是singleTask启动模式。
启动A-B-C-D在任务栈情况如图一
此时D启动B,则在任务栈情况如图二,因为B在栈内存在。并且会把B以上的Activity都销毁,只存在B和A.
按返回键返回Activity的情况则是B—A程序退出
四:signleInstance模式
Singlestance会出现在一个新的任务栈中,并且该任务栈只会存在这一个Activity。
四个Activity:A,C,D是默认启动模式,B是signleInstance启动模式。
ACD的任务栈号是在640在任务栈的情况是图一
B会新启动一个任务栈,任务栈号是641在任务栈的情况是图二
此时D启动B,B不会被重建。此时任务栈情况为图三
按返回键的则B销毁,任务栈641销毁B-D-C-A
注意:启动模式只针对Activity本身。可根据项目对Activity进行对应的启动模式!!!
更多相关文章
- No.11 使用firewall配置的防火墙策略的生效模式
- 【移动开发】Android应用开发者应该知道的东西
- Android应用程序的4个组件
- 自定义ContentProvider
- Android(安卓)java面试题收集
- 解决IE apk变成zip:Android(安卓)手机应用程序文件下载服务器 配
- Android程序应用运行时输出和查看日志
- 摘抄:Android:应用程序的生命周期
- android内部存储器和外部存储器