Activity启动模式
2016-05-16 10:56
148 查看
1、LaunchMode
standard(标准模式)
Activity的默认启动模式,每次startActivity都会重新创建一个Activity实例,不管之前是否已经存在该Activity实例。被启动的Activity实例会进入到启动它的Activity所属的任务栈中。
singleTop(栈顶复用模式)
如果待启动Activity在当前任务栈存在实例,并且实例位于栈顶,则启动Activity不会重新创建实例,而是直接复用之前的实例。同时,Activity的onNewIntent()方法会被调用,而生命周期函数onCreate()、onStart()不会被调用。
singleTask(栈中复用模式)
如果待启动Activity在其所属任务栈(TaskAffinity,默认为应用package name)中存在实例,则复用该实例。与singleTop类似,Activity的onNewIntent()方法也会被调用,而生命周期函数onCreate()、onStart()不会被调用。同时,singleTask自带clearTop效果,即任务栈中位于其上方的其他Activity会直接出栈,销毁。
singleInstance(单例模式)
强化版singleTask模式。首次启动时,单独为其创建一个任务栈,创建该Activity实例,压入栈中。之后,所有启动该Activity的请求都会复用该实例。
2、Flags
FLAG_ACTIVITY_SINGLE_TOP
对应singleTop启动模式
FLAG_ACTIVITY_NEW_TASK
对应singleTask启动模式
FLAG_ACTIVITY_CLEAR_TOP
启动Activity时,使用该标志会将栈中该Activity实例上方包括该实例在内的所有实例均做出栈操作,然后重新创建该Activity实例入栈。
3、IntentFilter
IntentFilter需要同时匹配action、category、data信息,才算匹配成功。
一个Activity可以有多个IntentFilter,匹配其中一个即算匹配成功。
setData()和setType()方法互斥,会相互清除对方设置。如需同时设置,可以使用setDataAndType()。
standard(标准模式)
Activity的默认启动模式,每次startActivity都会重新创建一个Activity实例,不管之前是否已经存在该Activity实例。被启动的Activity实例会进入到启动它的Activity所属的任务栈中。
singleTop(栈顶复用模式)
如果待启动Activity在当前任务栈存在实例,并且实例位于栈顶,则启动Activity不会重新创建实例,而是直接复用之前的实例。同时,Activity的onNewIntent()方法会被调用,而生命周期函数onCreate()、onStart()不会被调用。
singleTask(栈中复用模式)
如果待启动Activity在其所属任务栈(TaskAffinity,默认为应用package name)中存在实例,则复用该实例。与singleTop类似,Activity的onNewIntent()方法也会被调用,而生命周期函数onCreate()、onStart()不会被调用。同时,singleTask自带clearTop效果,即任务栈中位于其上方的其他Activity会直接出栈,销毁。
singleInstance(单例模式)
强化版singleTask模式。首次启动时,单独为其创建一个任务栈,创建该Activity实例,压入栈中。之后,所有启动该Activity的请求都会复用该实例。
2、Flags
FLAG_ACTIVITY_SINGLE_TOP
对应singleTop启动模式
FLAG_ACTIVITY_NEW_TASK
对应singleTask启动模式
FLAG_ACTIVITY_CLEAR_TOP
启动Activity时,使用该标志会将栈中该Activity实例上方包括该实例在内的所有实例均做出栈操作,然后重新创建该Activity实例入栈。
3、IntentFilter
IntentFilter需要同时匹配action、category、data信息,才算匹配成功。
一个Activity可以有多个IntentFilter,匹配其中一个即算匹配成功。
setData()和setType()方法互斥,会相互清除对方设置。如需同时设置,可以使用setDataAndType()。
相关文章推荐
- 设置textfield输入框输入内容上下限 (字符数量)
- linux在虚拟终端中的一些快捷方式
- android canvas layer (图层)详解与进阶
- 什么是网络爬虫,网络爬虫的职能是什么
- Linux Redis官方API和常用命令
- 处理异步提交的时候返回结果
- 支付宝即时到账接口的集成和使用
- filter()和sort()这两个方法一块学习,案例中。
- Java/Java Web中乱码解决汇总
- wmf和emf格式的图片有什么区别? JPG图片如何转换WMF文件?
- jsp中的在线编辑器
- struts之Cookie会话保持
- iOS UIView中坐标转换
- WebView适配手机界面问题
- 定时器SetTimer如何用在win32控制台用用程序中
- LNMP-php-fpm参数优化
- 使用 Spark Streaming 检测关键词
- WebStrom中的一些技巧和用法
- 线程通讯-传统方式
- 第二章 Stream API