1.1 Activity生命周期全面分析
(3) 系统只在Activity异常终止的时候才会调用onSaveInstanceState与onRestoreInstanceState来储存和恢复数据,其他情况不会触发这个过程。但是按Home键或者启动新Activity仍然会单独触发onSaveInstanceState的调用。
(4) onSaveInstanceState(Bundle outState) 这个方法调用时机在onstop之前,onRestoreInstanceState(Bundle savedInstanceState)在onstart之后只要调用次函数的参数一定有值,oncreat中的bundle不一定有值
1.2 Activity的启动模式
(5)注意:如果启动的是Standard模式的Activity无论它是哪个应用的(想要哪个taskaffinity属性的任务栈)都会压入启动它的Activity所在的栈中
如果启动的是其他应用的Singletask模式的Activity,如果被启动的Activity所在的应用没有启动就是没有自己的任务栈,它会创建一个任务栈并且压入这个任务栈(这就是第(3)条所说的A想要的任务栈)
如果启动的是其他应用的Singletask模式的Activity,如果被启动的Activity所在的应用启动了在后台就是有自己的任务栈,他会先检查这个任务栈中有没有这个Activity有就把这个Activity上面的Activity都清掉然后复用这个Activity,如果这个任务栈中没有这个Activity就创建后压入这个栈中
(6)taskaffinity这个参数标识了一个Activity所需要任务栈的名字,默认情况下所有Activity所需要的任务栈的名字为应用的包名,我们也可以为每个Activity都单独指定taskaffinity属性,这个属性必须不能可包名相同,否则相当于没有指定,并且这个属性的值的类型为字符串,这个字符串必须包含"."
1.3 IntentFilter的匹配规则
(1)action的匹配规则:action区分大小写,intent中必须有一个action且这个action能和过滤规则中的任何一个action相同即可匹配成功
(2)category的匹配规则:如果intent中出现了category,所有的category必须是过滤规则中已经定义的category才能匹配成功,也可以不设置category也能匹配,因为系统在调用startactivity或者startActivityforresult的时候回自动给intent加上"android.intent.category.DEFAULT",同时为了我们的Activity能够接收到这个隐式调用,就必须在intent-filter中指定这个"android.intent.category.DEFAULT"category。
(3)data的匹配规则,如果过滤规则中定义了data,那么intent中也必须定义可匹配的data,intent中的data和过滤规则中的任何一个data相同即可匹配成功