activity(1)生命周期

2019-01-08  本文已影响0人  落雀

一、官方生命周期图

Activity Lifecycle

首先会介绍 onCreate(),启动Activity的第一个方法,主要是初始化资料,以及指定画面资源 setContentView() 呈现目前的 Layout.xml,和包含一些需要初始化的组件。

接着 OnStart(),适合执行画面组件的内容。比方说当 Activity 沉到背景后,如果把设定的内容放在 onCreate(),当唤醒后会跳过 onCreate(),直接执行 OnStart()。比如记忆账号、密码 EditText。

onResume(),如对 Button 或 EditText 做点击的动作,此时会获得焦点,进行我们设计好的动作,比如输入或确认的动作,简单来说是 Activity 与使用者互动。

onPause() : 组件暂停,暂停执行中的工作和线程。onPause() 执行完后,通常会马上再执行 onStop()部分,但有例外,如果是碰到Dialog,没有完全遮盖住屏幕,那么便会在 onPause()停止,操作完 Dialog后,再按照原本的生命周期来运行。

onStop() : 停止,停止执行中的工作和线程,画面完全消失,但Activity还留在后台。

onDestory() : 销毁Activity,清除所有建立的资源,生命周期结束,包含GC回收动作。

如果说到这边面试官没有打断,甚至示意让继续说下去,那么我会告诉他几个个常见的动作。

点选主画面按钮
onPause() > onStop()
开启相机或另一个 Activity 或进入待命状态
onPause() > onStop(),当 Activity 结束或屏幕结束待命 onRestart() > onStart() > onResume()
Dialog执行
onResume() > onPause(),操作完后执行onResume()

*在画面转向时,生命周期会重新执行。我猜面试官如果没有当下问这个问题,我不会说死,当他之后再问也可以比较从容地回答这个问题。

补充 :

onCreate只能执行一次,onStart()能执行多次
onStop() 中 Activty 还没有被销毁,还存在内存中,可以透过切换Activity回复。onDestory() 是已经摧毁。
不要再 onStart()执行,判断屏幕方向代码,否则会有无限循环问题。

二、 Launch Mode

2.1> 启动模式
Launch Mode都不会陌生,用于设定Activity的启动方式,无论是哪种启动方式,所启动的Activity都会位于Activity栈的栈顶。有以下四种:

2.2> Intent的FLAG

Intent中定义了很多了FLAG,其中有几个FLAG也可以设定Activity的启动方式,如果Launch Mode设定和FLAG设定的Activity的启动方式有冲突,则以FLAG设定的为准。

除了这三个FLAG,还有一些FLAG对我们分析栈管理有些帮助。

上一篇 下一篇

猜你喜欢

热点阅读