第一章
1、当从Activity1跳转至Activity2时,先执行Activity1的onPause方法,然后再执行Activity2的onCreate方法,因此在onPause方法中做一些不耗时间的操作,如存储数据和停止动画等,做耗时操作会影响新Activity的显示。而在onStop方法中可做以稍微重量级的回收工作,在onDestroy中做最终的回收和资源释放工作。
2、onStop和onStart对应Activity是否可见,onResume和onPause对应Activity是否位于前台(即是否可响应用户触摸)。
3、Activity的启动请求先由Instrumentation处理,它通过Binder向AMS(ActivityManagerService)发送请求,AMS内部维护一个ActivityStack并负责其内部的Activity状态的同步,AMS通过ActivityThread去同步Activity的状态并完成生命周期方法。(暂时也不明白,先记着)
4、一些后台操作不适合脱离四大组件独自运行,因为这样进程容易被杀死,比如后台操作放在Service中能够保证有一定的优先级。
5、Activity的FLAG:1、FLAG_ACTIVITY_NEW_TASK:相当于在为Activiy配置singleTask属性;2、FLAG_ACTIVITY_SINGLE_TOP:相当于在为Activiy配置singleTop属性;3、FLAG_ACTIVITY_CLEAR_TOP:当此Activity启动会清除它上方的Activity出栈;4、FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS:该Activity不会出现在历史Activity列表中。
====================================================================================================================================
IntentFilter匹配规则:
1、action匹配规则:Intent中的action必须存在且只要和匹配规则中的任意一个action相同即可匹配;
2、category匹配规则:Intent中的所有category必须被包含在IntentFilter中所有已经定义的category之中,如果不设置Intent中的category,则系统会默认加上DEFAULT这个category,所以如果Activity接受隐式调用则必须在IntentFilter标签下定义这个DEFAULT的category,否则隐式intent自带的DEFAULT不包含在其中调用失败。
3、data匹配规则:
data由mimeType和URI组成。
URI格式:<scheme>://<host>:<port>/[<path>|<pathPrefix>|<pathPattern>](schemem默认值为content或者file)
URI例子:content://come.example.project:200/folder/subfolder/etc
匹配规则:与action类似,必须有data,且匹配IntentFilter中某一个data就行。
intent设置data时候必须调用setDataAndType
判断是否有Activity能够响应隐式intent:
1、PackageManager的resolveActivity或者 queryIntentActivities方法
上面两个方法第二个参数传MATCH_DEFAULT_ONLY,代表仅仅匹配声明了DEFAULT的Activity,不带此声明的无法接受隐式intent
2、intent的resolveActivity方法