Activity的生命周期和启动模式

2016-05-18  本文已影响0人  无声De叹息

Activity的生命周期和启动模式

1.1 Activity的生命周期分析

Activity的生命周期分为两个部分,一个是典型情况下的生命周期,另一个是异常情况下的生命周期。所谓的典型情况下的生命周期是指,是指有用户参与的情况下,Activity所经过的生命周期的改变。而异常情况下的生命周期是指Activity被系统回收,或者当前设备的Configuration发生改变从而导致Activity被销毁重建。

1.1.1 典型情况下的生命周期

在正常情况下,Activity会经历的生命周期有:

可将Android典型情况下的生命周期分为三种

下面是google官方给出的Activity生命周期的切换过程:

activity_lifecycle.png

需要注意的问题

因为前一个Activity执行完成onPause方法以后新Activity的onResume才能执行。所以我们如果在onPause或者onStop中执行耗时操作,尽量在onStop中执行。

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

当系统配置发生变化时,或者系统内存不足时,Activity可能被杀死。

Tips:
当系统配置改变后,Activity会被重新创建,如果想Activity不被系统重新创建那么我们可以设置Activity的configChanges属性。

android:configChanges="orientation|screenSize"

Activity的启动模式

activity的启动模式共有四种。

Tips:
ApplicationContext启动standard模式的Activity的时候会报错。因为非Activity的Context并没有任务栈。要解决这个问题的方法,为带启动Activity指定FLAG_ACTIVITY_NEW_TASK标记为。

Activity的Flags

主要介绍一下比较常用的Flags

IntentFilter的匹配规则

我们知道启动Activity分为两种,显示调用和隐式调用。显示调用需要指定被启动对象的组件信息,包括包名类名,而隐式调用需要明确指定组件信息。隐式调用需要Intent能够匹配目标组件的IntentFilter中所设置的过滤信息。下面我们来介绍一下IntentFilter中的各种属性和匹配规则。

</pre></code>
data由两部分组成,mimeType和URI。mimeType指媒体类型,比如image/jpeg、audio/mpeg4generic和video/*等,可以表示图片、文本、视频等不同的媒体格式,而URI中包含的数据就比较多了。下面是URI的结构:

<scheme>://<host>:<port>/[<path>|<pathPrefix>|<pathPattern>]

content://com.example.project:200/folder/subfolder/etc

http://www.baidu.com:80/search/info

下面介绍每个数据的含义。

注意:
如果要为Intent指定完整的data,必须调用setDataAndType方法,不能先调用setData在调用setType,因为两个方法彼此会清除对方的值。

上一篇 下一篇

猜你喜欢

热点阅读