Activity总结

1. 生命周期

Activity总结_第1张图片
Activity的生命周期.gif
1.1 onStart / onStop和onResume / onPause的差异

onStart和onStop是从Activity是否可见这个角度来回调;
onResume和onPause是从Activity是否处于前台这个角度来回调。

1.2 从Activity A启动到Activity B这个过程中,Activity A的onPause和Activity B的onResume谁先执行?

Activity A的onPause先执行,然后是Activity B的onResume执行。

1.3 异常情况下生命周期的分析

资源配置发生改变会导致Activity被杀死并重建;
资源内存不足导致低优先级的Activity被杀死。
onSaveInstanceState -> onDestroy
onCreate -> onRestoreInstanceState

2. 启动模式

standard 标准模式:
每次启动Activity都新创建一个并压人Activity栈中。

singleTop 栈顶复用模式:
如果要启动的Activity处于栈顶,则不会新创建一个Activity,而是复用栈顶的Activity,该Activity的onNewIntent()方法将会被回调;
如果要启动的Activity不处于栈顶,则新创建一个Activity,并压入Activity栈中。

singleTask 栈内复用模式:
如果要启动的Activity所需要的栈存在且该Activity处于栈内,则复用该Activity,将该Activity移到栈顶(该Activity之上的Activity弹出栈),并回调onNewIntent()方法;
如果要启动的Activity所需要的栈存在且栈内没有该Activity,则新创建该Activity,并压入栈中;
如果要启动的Activity所需要的栈不存在,则先创建所需要的Activity栈,然后创建该Activity,并压入栈中。

singleInstance 单实例模式:
加强的singleTask模式,该Activity必须处于独立的Activity栈中。
如果Activity栈存在,Activity也处于栈内,则复用该Activity;
如果Activity栈存在,Activity不处于栈内,则新创建Activity,并压入栈中。

3. Intent

3.1 Activity启动方式

显示启动:指定要启动的Activity的包名和类名;

隐式启动:Intent需要匹配目标组件的IntentFilter中所设置的过滤信息。

3.2 IntentFilter

只有一个Intent同时匹配action、category和data才算完全匹配,一个Activity可以有多个intent-filter,一个Intent只要能匹配任何一组intent-filter即可。
action:要求Intent中的action存在且必须和过滤规则中的其中一个action相同,注意它区分大小写;

category:要求Intent中如果包含category则必须和过滤规则中的一个相同,要求Intent中可以不包含category(默认下会为intent加上"android.intent.category.DEFAULT")

data:如果过滤规则中定义了data,那么Intent中必须也要定义可匹配的data。data由两部分组成,mimeType和URI。mimeType指媒体类型,如image/jpeg。URI结构如:
://:/[||]

你可能感兴趣的:(Activity总结)