Android 生命週期 - Activity

为什么来写这个呢?因为我在面试时发现自己忘光光QQ

Activity lifecycle

tags: Android activity lifecycle

activity

doc

onCreate

一定要在此做 setContentView()
和 viewModel 关联,并为类别内的变数做出实体
会接受 savedInstanceState 作为 function 传入参数,可在此读取保存的状态

onStart

对用户可见,ui 以绘製完成,但无法响应用户操作,为互动响应做準备

onResume

和用户响应,是大多核心功能会执行的生命週期
当现在的 activity 转移焦点时,ex. 出现 dialog ,生命週期会到 onPause , 因此如果有东西在 onPause 销毁掉,建议也要实现 onResume 来让资源重新载入到用户互动的生命週期里面

在多萤幕状态中,只有一个 activity 会获得 focus,其他的都会到 onPause 的阶段 ; 而同样让 focus 远离的行为包含来电、切换到另一个 activity

onPause

在此生命週期的 Activity 仍可以更新,像是 google map 的导航,就可以让手机一边和其他应用程式互动,一边显示导航即时更新

对于用户叫出 recent application 功能,或是按下返回键,都会经过此週期
:::info
不应在此储存状态数据或 io ,因为任务可能会无法完成,变到下一阶段
:::

onStop

已不可见,应在此释放资源,例如暂停动画、gps 从精确改为大略,并做 io 操作和保存 ui 状态

onRestart

已停止的 activity 重启时,接到 onStart

onDestory

用户关闭或是 os 关闭,在 configurationChange 会经过

应释放 onStop 没释放的所有资源

onSaveInstanceState

主动关闭不触发,os 杀掉、旋转会触发,不同的是,会主动将有 id 的 view 状态记录下来
custom view 的状态保存

onRestoreInstanceState

也能够过在此拿到 saveInstanceState 的 bundle ,且因这此有在 bundle 不为 null 的时候呼叫,所以无需检查,而这个会在 onStart 之后调用

configurationChange

旋转、切换语言

onPause -> onStop ->onDestory -> onCreate -> onStart -> onResume


整个走一遍

pause

dialog, 多萤幕工作

onPause -> onResume

暂时离开应用

从 recent application 离开,透过 home 键回到主页

onPause -> onStop ->(onReStart 看是否是新实体 ->) onstart -> onResume

activity返回主萤幕会发生什么事?

一是透过返回键,关闭应用到主页,用户主动关闭

onPause -> onStop -> onDestory


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章