android activity声明周期学习笔记

Posted 每天都不一样

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android activity声明周期学习笔记相关的知识,希望对你有一定的参考价值。

android生命周期图:

Activity继承了ApplicationContext;

1:初次加载activity时顺序执行:onCreate()-->onStart()-->onResume()

2:back键被按下之后会顺序执行:onPause()-->onStop()-->onDestroy()

3:home键被按下之后会顺序执行:应用程序并没有销毁,onPause()-->onStop()(比如需要切换另一个应用程序,特殊情况:当新的activity采用透明主题,那么当前activity不会回调onStop())

4:之后再次打开该应用程序,分别执行了onRestart()-->onStart()-->onResume()

当需要在通过home键来回切换应用程序,并且保留每个应用程序view的相关内容的时候,需要重写activity的onPause()和onRestart()方法,用来保存切换应用程序之前的内容和恢复内容。

其中看似类似的功能,onStart()&onStop  和  onResume()&onPause(),分别配对表示的意义不同而已, 前者从activity是否可见这个角度来回调的,后者从activity是否位于前台这个角度来回调的。。

当两个activity切换时,第一个activity先pause,第二个activity才启动。所以在onPause()&onStop()中尽量不做耗时操作,从而使得新的activity尽快显示并切换到前台。

activity启动:

Instrumentation(Binder)----->AMS 请求(activityStack) 通过activityThread----->同步activity状态

异常情况下的生命周期:

1:在资源相关的系统配置发生改变导致activity被kill并重新创建:

系统在activity异常终止的时候调用onSaveInstanceState和onRestoreInstanceState来存储和恢复数据,其它情况不会触发这个过程。

2:资源内存不足导致低优先级的activity被kill:

activity优先级:

--前台activity:正在和user交互,优先级最高;

--可见但非前台activity:比如activity中弹出了对话框,导致activity可见但是位于后台无法和用户直接交互;

--后台activity:已经被暂停的activity,比如执行了onstop(),优先级最低

如果一个进程中没有四大组件在执行,那么这个进程很快会被系统kill。

 

以上是关于android activity声明周期学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

Android学习笔记 Activity的生命周期

Android学习笔记(44):Activity

Android Activity学习笔记

Activity 学习笔记02-生命周期

Activity 学习笔记02-生命周期

跟着Google学Android —— 3.1 管好Activity的生命周期