Activity的启动模式以及onNewIntent和onConfigurationChanged这两个生命周期方法的场景
来源:互联网 发布:域名过户需要手续费吗 编辑:程序博客网 时间:2024/06/08 01:57
1.Activity的启动模式有哪几种,分别用于什么场景?
Activity的启动模式的4种:
- standard标准启动模式,默认的启动模式。每一次启动这个activity都会创建新的activity实例。被启动的activity会被放入启动者的栈中,如果启动者除Activity之外的Context(如Application),这时没有任务栈,就会报错,此时需要指定FLAG_ACTIVITY_NEW_TASK标记位,创建一个新的栈。
应用场景:绝大部分普通的场景下使用的acticity。
2.singleTop栈顶复用模式,设置这个模式的activity,如果任务栈的栈顶存在这个activity,则不会重新创建新的activity,这个activity 的onNewIntent()方法会被调用。
应用场景:通过通知栏来启动的页面。
3.singTask栈内唯一,在当前任务栈里面只能有一个activity实例的存在。当启动这种模式的activity时,会检查任务栈中是否存在这个activity,如果存在,则会调用该activity的onNewIntent()方法,并且把它上面的activity全部清空 ,这个activity称为栈顶。
应用场景:App中的一般使用的MainActivity或者其他一些需要占用大量系统资源的Activity。浏览器的主界面,不管多少个应用启动浏览器,只会启动一次浏览器主界面,其余的情况走OnNewIntent方法,并且会清空主界面上的其他actvity。
4.singleInstance,这个模式里面的activity会运行在自己的任务栈里面,并且这个任务栈里面只有一个实例存在。启动这个模式的Activity,如果当前系统中有这个样的一个Activity已经被启动,会把它所在的任务栈切换到前台,这个activity的onNewIntent()会被调用。如果你要保证在整个手机操作系统里面只有这一个activity,则可以使用这个模式。
应用场景:打电话界面
2.描述onNewIntent和onConfigurationChanged这两个生命周期方法的场景?
(1) 这几种场景下Activity不会重新被创建,onNewIntent方法会被调用。
1.singtop模式启动的activity,在任务栈中存在。
2.singTask模式启动的activity,任务栈中存在。
3.singInstance模式启动的acitivity,系统中已经存在一个栈包含这个activity。
这些情况下可以通过setIntent(intent)来刷新intent数据.
(2)默认情况下,当系统配置(如系统语言,屏幕方向)发生改变后,系统会销毁当前的activity重新创建一个新的activity,重新执行一次生命周期方法。
如果屏幕旋转时,不希望Activity被销毁,可以在配置信息中声明:
android:configChanges = “orientation|screenSize”在这种情况下,如果屏幕旋转方向,Activity则不会被销毁,他的onConfigurationChanged()方法会被调用,通过读取configuration来读取对象中最新的配置来适配UI界面.
参考刚哥留下的标准答案。
- Activity的启动模式以及onNewIntent和onConfigurationChanged这两个生命周期方法的场景
- Activity的启动模式和onNewIntent
- Activity的启动模式以及onNewIntent(Intent intent)
- Activity的启动模式以及onNewIntent(Intent intent)
- Android的生命周期和启动模式以及使用场景
- Activity的生命周期和启动模式以及调用模式
- 【Android】 Activity启动模式singleTask的数据传输 onNewIntent方法
- Activity的四种启动模式和onNewIntent()的使用
- Activity的四种启动模式和onNewIntent()
- Activity的四种启动模式和onNewIntent()
- Activity的四种启动模式和onNewIntent()
- Android--Activity的四种启动模式和onNewIntent()
- Activity的四种启动模式和onNewIntent()
- Activity的四种启动模式和onNewIntent()
- Activity的四种启动模式和onNewIntent()
- Activity的四种启动模式和onNewIntent()
- Activity的四种启动模式和onNewIntent()
- Activity的四种启动模式和onNewIntent()
- 谈一谈RingtonePickerActivity
- 1072. 开学寄语(20)
- 小型项目程序 ERP——沙盘模拟
- android高德地图定位
- struts2 问题 Dispatcher initialization failed Unable to load configuration.
- Activity的启动模式以及onNewIntent和onConfigurationChanged这两个生命周期方法的场景
- APK安装时的过滤方式:包名白名单、证书认证
- 欢迎使用CSDN-markdown编辑器
- js小记
- oracle索引原理
- 用于RF收发器的简单基带处理器
- Javascript学习笔记(Object对象)
- OpenMesh编译错误解决小结
- Angular管道操作符(|)