第一章 Activity的生命周期和启动模式

生命周期

一、正常情况下的生命周期
1、onCreate()和onDestroy()是配对的,标志着Activity的创建与销毁
onStart()和onStop()是配对的,标志着Activity是否可见
onResume()和onPause()是配对的,标志着Activity是否在前台
2、从A打开B:
A:onPause()
B:onCreate()
B:onStart()
B:onResume()
A:onStop()

二、非正常情况下的生命周期
1、两种情况:系统配置发生改变导致Activity被杀死并重新创建;资源内存不足导致低优先级的Activity被杀死
1、onSaveInstanceState()在onStop()之前
onRestoreInstanceState()在onCreate()之后。onCreate()里的Bundle可能为空,onRestoreInstance()里的Bundle不会为空。两个方法都可恢复数据,但官方文档建议使用onRestoreInstanceState()恢复。
2、系统会默认帮我们保存当前Activity的视图结构,并在Activity重启时帮我们恢复这些数据
3、可以通过设置configChanges属性可以避免一些情况重启Activity,同时会回调onConfigurationChanged()
4、Activity优先级由高到低有如下三种:前台Activity、可见但非前台Activity、后台Activity。当系统内存不足时,系统会按照上述优先级杀死Activity所在的进程。如果一个进程没有四大组件,那么这个进程将很快被系统杀死。


启动模式

启动模式见:http://blog.csdn.net/wwww_dong/article/details/78705118


IntentFilter

想隐式启动一个特定的页面,给的intent必须要满足这个页面的IntentFilter
1、action:如果IntentFilter设置了action(可以设置多个action),那么intent在setAction时,这个action必须匹配IntentFilter中action的其中一个
2、category:intent可以add多个category,不管有几个,每个category都必须是intentfilter里定义过的
3、data:
1)data规则和action一样。
2)如果intentfilter里只指定,那么intent里只设置type为”image/*”就可以启动该activity;但如果intent里不仅设置type,还要设置uri,那么这时uri的schema必须是file或者content才行,因为这是它的默认值,否则会报错
3)如果intentfilter里指定了mimetype和schema,那么intent里可以设置的比intentfilter里的内容多,只要mimetype和schema能匹配就可以,比如intent里不仅可以设置mimetype和schema,还可以多设置host等等
4、intent-filter:一个页面可以设置多个intentfilter,只要其中一个被满足就可以了
5、intent里的内容不能比intentfilter里的多。比如intentfilter里只设置了action和category,这时有个intent满足了它的要求,不过却多设置了data,那么这个intent也是启动不了这个activity的
6、用隐式意图启动activity时,为了避免没有对应的activity而造成应用crash,可以先通过PackageManager的queryActivity方法判断一下有无对应的activity

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值