Activity的启动模式
来源:互联网 发布:库里2016常规赛数据 编辑:程序博客网 时间:2024/06/06 18:38
Android采用Task来管理多个Activity,当启动一个应用时,Android就会创建一个Task,然后启动应用的入口Activity,先启动的Activity放在栈底,后启动的放在栈底。Activity的加载模式就负责管理实例化、加载Activity的方式,并可以控制Activity与Task间的加载关系。我们可以通过Activity类的getTaskId()获取该Activity所在的Task,
设置启动模式:
<activity
android:name=".TwoActivity"
android:label="@string/app_name"
android:launchMode="standard">
</activity>
四种模式
standard:标准模式,Activity的默认加载模式
singleTop:Task栈顶单例模式
singleTask:Task内单例模式
singleINstance:全局单例模式
standard模式:每次启动Activity时都会创建一个新的Activity实例,并将Activity添加到当前的Task栈中,不会启动一个新的任务栈。
singleTop:当将要启动的Activity已经在Task栈顶时,系统不会重新创建实例,而是直接服用已有的Activity,若将要启动的Activity没有在栈顶,则会重新创建Activity放到任务栈中。这种模式同样不会重新创建新的Task
singleTask:这种加载模式的Activity在同一个任务栈中只有一个实例,若将要启动的Activity不存在,则会创建activity实例,放到任务栈中,若在栈顶,则不会创建新的实例而是同singleTop相同,若将启动的activity实例存在而不在栈顶则会移除该activity上面的activity实例移除任务栈,从而使目标转入栈顶,这种模式同样不会重新创建新的Task。
singleInstance:该启动模式无论从那个Task启动Activity,都会创建一个新的Task,然后创建一个新的Activity,并将Activity放入任务栈中,所以该模式的activity所在的任务栈中只有一个activity,若启动的目标activity不存在,则会创建一个新的任务栈,在创建一个新的activity,将activity放到新的任务栈中,若activity已经存在,无论该activity在那个应用程序中,位于那个Task,系统都会把该activity所在的task转到前台,从而使该activity显示出来。该模式的activity设置exported为true,表明允许其他程序来启动该activity。
onNewINtent()方法的使用
当启动模式是singleTask时,当Activity实例在任务栈中存在时,再次启动该activity时会先调用onNewIntent()—>onRestart()—>onStart()—>onResume(),若不存在则会调用onCreate()—>onStart()—> onResume()
- activity的启动模式
- Activity的启动模式
- Activity的启动模式
- Activity的启动模式
- Activity的启动模式
- Activity的启动模式
- activity的启动模式
- Activity的启动模式
- Activity的启动模式
- Activity的启动模式
- Activity 的启动模式
- Activity的启动模式
- Activity的启动模式
- Activity的启动模式
- Activity的启动模式
- Activity的启动模式
- activity的启动模式
- Activity的启动模式
- Box2D C++ 教程-查询 World
- 关于js里undefined的重写问题
- 扩展欧几里德应用 hdoj 1222
- java版strspn
- Algorithm-How To Identifying Same IMG
- Activity的启动模式
- XPath提取XML文档数据
- VS2015 C++/CLR
- LaTex简历模板 Using the LaTeX Resume Templates
- Java使用多线程导入数据到Oracle中
- LaTex初学者模板
- leetcode:Minimum Depth of Binary Tree
- Google I/O大会,炫酷产品汇总
- C++菱形继承