Activity的生命周期和启动模式
来源:互联网 发布:淘宝店女店主 编辑:程序博客网 时间:2024/05/07 02:57
Chapter1 Activity的生命周期和启动模式
一 、Activity的生命周期
1.典型情况下:
onCreate()
Activity正在被创建,可以做些初始化工作。
onRestart()
Activity正在重新启动,一般,当当前Activity从不可见重新可见时调用。
onStart()
Activity正在启动,Activity可见当时还没出现在前台,还无法与用户交互。
onResume()
Activity可见,并在出现在前台。
onPause
表示Activity正在停止,正常情况下,紧接着onStop
会被调用,如果在这个时候快速回到原Activity,onResume()
将被调用。 此处鲁能进行太耗时的操作,将会影响新Activity的显示(onPause()
执行完,新Activity的onResume()
才会执行)。
onStop()
Activity即将停止,不能太耗时。
onDestroy()
Activity即将被销毁,可以进行最终的回收工作与资源释放。
注意
- 新Activity是透明主题时,旧Activity不会走onStop。
- Activity切换时,旧Activity的onPause会先执行,然后才会启动新的Activity。
onStart()
和onResume()
、onPause()
和onStop()
的区别:这两个配对分别代表不同的意义,onStart与onStop是从Activity是否可见这个角度调用的,onResume和onPause是从Activity是否显示在前台这个角度来回调的,在实际使用没其他明显区别。
2.异常情况下:
当Activity被异常终止时(如旋转屏幕),系统将调用onSavaInstanceState来保存状态。调用是在onStop之前,它与onPause没有时序关系。
当Activity被重新创建时,将调用onRestoreInstanceState(调用在onStop之后),并将onSavaInstanceState保存的Bundle对象作为参数传到onRestoreInstanceState与onCreate方法。我们可以在onRestoreInstanceState与onCreate方法中判断Activity是否被重建,并可以取出数据进行恢复。
二、Activity的启动模式
- standard:标准模式,默认模式。每次启动一个Activity就会创建一个新的实例。(使用ApplicationContext去启动standard模式Activity就会报错。因为sandard模式的Activity会默认进入启动它所属的任务栈,但是由于非Activity的Context没有所谓的任务栈 就出错了。)
- singleTop:栈顶复用模式。如果新Activity已经位于任务栈的栈顶,就不会重新创建,同时回调它的onNewIntent方法。
- singleTask:栈内复用模式。 单实例模式,只要Activity在一个任务栈中存在,那么就不会重新创建,系统将回调onNewIntent方法。如果不存在就会重新创建一个任务栈 并将A实例化后放入栈中。
- singleInstance:单实例模式。 具有此模式的Activity只能单独位于一个任务栈中。
三、IntentFilter的匹配规则
<activity android:name="com.gaop.MainActivity" android:configChanges="screenLayout"//设置在某些情况下不重新创建Activity android:lable="@string/app_name" android:launchMode="singleTask" android:taskAffinity="com.gaop.task1"//设置任务栈 <intent-filter> <action android:name="com.gaop.c"/> <action android:name="com.gaop.d"/> <category android:name="com.gaop.category.c"/> <category android:name="com.gaop.category.d"/> <category android:name="android.intent.category.DEFAULT"/> <data android:mimeType="text/plain"/> </intent-filter></activity>
1. action匹配规则 要Intent中的action能够与过滤规则中的任何一个相同即可匹配成功,如果没有指定action,匹配失败。
2. category匹配规则 Intent中一旦出现category就必须每个category与过滤规则中的其中一个相同,Intent中没有category也会匹配成功。
3. data的匹配规则 data由mimeType(媒体类型,如 image/jpeg )与URL组成。 规则中只有mimeType时,Intent必须是指定的mimeType。 有多组data规则时,匹配其中一组即可。
采用隐式方式启动Activity时,可以用PackageManager的resolveActivity方法或者Intent的resolveActivity方法判断是否有Activity匹配我们的隐式Intent。
- Activity的生命周期和启动模式
- Activity的生命周期和启动模式总结
- Activity的生命周期和启动模式
- Activity的生命周期和启动模式
- Activity的生命周期和启动模式
- Activity的生命周期和启动模式
- Activity的生命周期和启动模式
- Activity的生命周期和启动模式
- 第一章 Activity的生命周期和启动模式
- 第一章 Activity的生命周期和启动模式
- Activity的生命周期和启动模式
- Activity的生命周期和启动模式详解
- Activity的生命周期和启动模式
- Activity的生命周期和启动模式
- Activity的生命周期和启动模式
- Activity的生命周期和启动模式
- 第一章: Activity的生命周期和启动模式:
- Activity的生命周期和启动模式
- scala学习笔记7 对象
- 自定义iOS7导航栏背景,标题和返回按钮文字颜色
- C++总结
- SDN学习总结
- 贪心 POJ 1017
- Activity的生命周期和启动模式
- STM32CubeMX:UART操作
- 事业中的烦恼
- refersh停车场
- c++ primer学习笔记ch01
- Android请求网络数据在部分手机上出现没有数据返回的情况
- JDK1.8使用JDK1.7编译
- HDU 5781--ATM Mechine(记忆化搜索+暴力)
- trim()和replqce的作用及区别