美文网首页Android小白菜的成长之路
Android四大组件之一:Activity

Android四大组件之一:Activity

作者: 用心life | 来源:发表于2019-06-26 17:46 被阅读0次

一、Activity的四种活动状态:

1、运行状态

2、暂停状态

3、停止状态

4、销毁状态

二、Activity的生命周期:

1、生命周期的方法

onCreate() >>onStart() >> onResume() >> onPause() >> onStop() >> onDestroy() ;

注:还有一个onRestart()方法在Activity重新回到前台时(从不可见变成可见)会调用

Activity的生命周期(1)

     1.1 Activity各个方法的调用时机

eg: activityA和activityB

正常启动一个activityA时候:onCreate() >> onStart() >> onResume()

activityA中启动activityB的时候:先会调用activityA中的onPause() >>activityB的onCreate() >> activityB的onStart() >> activityB的onResume() >>activityA中的onStop()

从activityB退回到activityA的时候:先会调用activityB中的onPause() >> activityA的OnRestart() >> activityA的onStart() >> activityA的onResume() >> activityB的onStop() >> activityB的onDestroy()

当activityA显示在台前的时候按下Home键,然后再点击程序回到台前 : onPause() >> onStop() >>onRestart() >> onStart() >> onResume()

2、正常情况下的生命周期

如图(1)

3、异常情况下的生命周期

在程序的运行中,activity可能会遇到异常情况,一般有两种

    3.1 资源相关的系统配置发生改变导致Activity被杀死然后重新创建(横              竖屏)

            

(2)

       当系统配置发生变化时,Activity会被销毁,onPause() >> onStop() >>onDestroy()都会被调用,这时候系统会调用onSaveInstanceState(Bundle bundle)方法来保存被销毁的Activity的一些状态,然后在Activity重新创建之后系统会调用onRestroeInstanceState(Bundle bundle),利用传递过来的Bundle对象来恢复状态

注意:只有在Activity被异常销毁的时候,系统才会调用 onSaveInstanceState()和onRestoreInstanceState() 方法,如果在onCreate中获取Bundle对象需要判断对象是否为空,onRestoreInstanceState()中的Bundle对象一定不为空

        3.2 系统资源内存不足导致优先级低的Activity被销毁

      在Android开发中 优先级:

前台Activity(可跟用户交互) >> 可见但是不能交互的Activity >> 后台Activity

优先级越低越容易被杀死

如果不想Activity重新被创建,可以给Activity指定configChanges属性

最常用的有四种:locale 、orientation、srceenSize 、keyboardHidden;

三、Activity的启动模式

Android中负责管理Activity的栈叫做任务栈,也可以叫做返回栈,Activity都会被栈管理,后进先出

Activity有四种启动模式 

1、standard(默认启动模式)

这是Activity的默认启动模式,每次启动一个Activity都会重新创建一个此Activity的实例,不管任务栈中是否已经存在它的实例

2、singleTop(栈顶复用模式)

当一个Activity被启动的时候,判断栈中是否有此Activity的实例,如果有实例则判断是否在任务栈的栈顶,如果在栈顶则不会重新创建它的实例,系统会调用onNewIntent()方法,如果不在栈顶则会创建它的实例,如果任务栈中没有此Activity的实例正常创建它的实例。

3、singleTask(栈内复用模式)

当一个Activity被启动的时候,系统会先判断是否有它想要的任务栈,如果不存在就重新创建一个任务栈,然后把创建它的实例并放入栈中,如果有任务栈了,判断栈中是否有此Activity的实例,如果有实例则把此实例调到栈顶,系统会调用onNewIntent()方法,并把此实例上面别的Activity实例全部移出任务栈(适用于登录界面),如果没有实例则创建实例并放入栈中

4、singleInstance(单实例模式)

是singleTask的加强版,具有singleTask的一切特征,此启动模式的Activity只能单独的存在于一个任务栈中,当一个此启动方式的Activity被启动的时候,系统会新建一个任务栈并把它的实例放进去,因为是栈内复用模式,所以后面都不会再创建它的实例。

这只是我个人用来复习和总结的,不能用于其他用途,如果有错误或者侵权,可以评论。

相关文章

网友评论

    本文标题:Android四大组件之一:Activity

    本文链接:https://www.haomeiwen.com/subject/yqiccctx.html