700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 第一章: Activity的生命周期和启动模式:

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

时间:2019-10-27 18:11:48

相关推荐

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

1.典型情况下的Activity的生命周期

1.1 所谓的典型情况下的Activity的生命周期,是指用户参与的情况下.即用户正常使用app应用的时候正常执行的activity的生命周期.

1.2 在正常的情况下,Activity会经历如下的生命周期.

1>onCreate() -> 表示Activity正在被创建,这是生命周期的第一个方法.一般只会在Activity被创建的时候执行一次.

在这个方法中,我们可以做一些初始化的工作,例如setContentView()去加载布局,初始化布局所需控件,以及初始化Activity所需数据等.

2>onRestart()-> 表示Activity正在重新启动.这个方法执行的前提是Activity已经被创建过,并且在当前的Activity从不可见重新

变为可见的时候会调用onRestart()方法.这种情况一般是由按下HOME键盘,或者启动两外一个Activity之后,当前的Activity

就会执行onPause() -> onStop()方法,而后它又回到当前的Activity,则就会执行 onRestart() -> onStart() -> onResume()

3>onStart()-> 表示Activity正在被启动,即将开始,这时Activity已经可见了,但是还没有出现在前台,还无法和用户进行交互.

这个是Activity已经显示出来,只是我们还看不到.所以它一般是和onResume()方法一起来显示Activity

4>onResume()-> 表示Activity已经完全可见了,并且出现在前台开始活动.它和onStart()方法的主要区别是:

onStart()方法执行的时候Activity还在后台,而onResume()方法执行的时候Activity才显示到前台.

5>onPause()-> 表示Activity正在停止,正常情况下,紧接着Activity的onStop()就会被调用.但是有一些特殊的情况.

例如弹出一个对话框的时候,这个时候就不会执行onStop()方法,因为当前的Activity()仍然是部分可见的.如果

这种情况下再回到当前的Activity就会直接调用onResume()方法.

在onPause()方法中,可以做一些存储数据,停止动画等工作,但是注意不能太耗时,因为这样会影响到新的Activity的显示.

onPause()必须先执行完之后,新的Activity的onResume()方法才会执行.

6>onStop()-> 表示Activity已经不可见了,Activity即将停止,可以做一些稍微重量级的工作,同样不能太耗时.

7>onDestroy()-> 表示Activity即将被销毁,这是Activity生命周期中的最后一个回调,在这里我们可以做一些回收

工作和一些资源释放.

1.3 针对这张图,附加解析如下:

1> 针对一个特定的Activity,第一次启动的时候,回调如下:

onCreate() -> onStart() -> onResume().

2>当用户打开新的Activity或者切换到桌面的时候.并且当前的activity完全不可见的情况下回调如下:

onPause() -> onStop(). 有一种特殊的情况,如果新的Activity是透明的,则不会回调onStop()方法.

3>当用户再次返回到原来的Activity的时候,回调如下方法:

onRestart() -> onStart() -> onResume()

4>当用户按下back键的时候,回调如下方法:

onPause() -> onStop() -> onDestroy()

5>当Activity被系统回收后再次打开的时候,生命周期方法回调过程和<1>中的一样,生命周期方法一样,主要是参数不一样.

6>从整个生命周期来说:

onCreate() 和 onDestroy() 方法是配对的,它们之间所经历的代表一个Activity从创建到销毁一个完整的生命周期.

并且这两个方法,在一个Activity的生命周期当中只可能被调用一次.

从Activity是否可见来说:onStart()和onStop()是配对的,它们之间经历的是Activity的可见期.

从Activity是否在前台来说:onPause()和onResume()是配对的,它们之间经历的是Activity在前台的生存期.

1.4 onStart() 和 onResume, onPause()和onStop()从描述上差不多,它们之间到底有什么实质性的不同?

onStart() 和 onStop() 方法是针对Activity是否可见而设定的回调方法.

onResume和onPause() 方法是针对Activity是否在前台而设定的回调方法.

总体来说,一个Activity如果在前台,那么它必定是可见的.而有的Activity虽然可见但是并没有在前台运行.

没有获得焦点,这个时候就只能调用onPause(),而不能调用onStop()方法,因为onStop()方法一旦调用,

就标志着一个Activity就不可见了,这种情况下很有可能会影响用户体验.

1.5 假设当前的Activity A ,如果这个时候打开一个新的Activity B,那么B的onResume()方法和A的onPause()哪个先执行呢?

只有当Activity A 的onPause()方法执行完毕之后,新的Activity才会去执行 onCreate() -> onStart() -> onResume() 方法.

所以在onPause()方法中不宜执行耗时的操作,只适合做一些轻量级的任务.否则就会造成非常不好的用户体验.

2. 异常情况下Activity的生命周期

2.1 何为异常情况下的生命周期:

异常情况下的生命周期是指当前的Activity由于系统的资源不足可能被杀死,或者是当资源的系统配置文件改变造成Activity被杀死的情况

2.2 资源相关的系统配置文件发生改变导致Activity被杀死并重新创建:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。