[Android答答答]什么是Activity的生命周期

前言

我们平时开发中打交道最多的应该就是activity,关于它的生命周期对于整个app是非常重要的,合适的时机进行合适的操作才能使app更好的运行。

概念

1.Activity的生命周期有哪些

Activity各个生命周期和顺序见下图
在这里插入图片描述
onCreate:创建的意思,生命周期的第一个方法,常用于初始化,比如setContentView加载布局,初始化变量等。
onStart:Activity被展示到用户面前,但是此时无法产生焦点,无法与用户交互,一般可以进行初始化动画操作。
onResume:此时Activity在最前面,获得了焦点,用户可以进行操作交互。
onPause:Activity失去焦点,无法交互,但是仍然在前台。
onStop:Activity不可见,一般进行回收资源操作。
onDestory:Activity销毁。

2.各种情况变化Activity生命周期怎么变化

情况生命周期变化
弹窗dialog、Toast无变化
按home键返回主页按下:onPause->onStop
点击app: onRestart->onStart->onResume
息屏亮屏息屏:onPause->onStop
亮屏:onReStart->onStart->onResume
按返回键onPause->onStop->onDestory
跳转至其他Activity跳转:onPause(A)->onCreate(B)->onStart(B)->onResume(B)->onStop(A)
返回:onPause(B)->onReStart(A)->onStart(A)->onResume(A)->onStop(B)->onDestory(B)
横竖屏切换onPause->onStop->onDestory->onCreate->onRestart->onResume

3.onSaveInstanceState和onRestoreInstanceState怎么使用

onSaveInstanceState和onRestoreInstanceState是用来保存和恢复Activity数据的,因为Activity在被

方法调用时机
onSaveInstanceState当Activity入栈且非栈顶时(比如跳转其他Activity或者点击home键),onSaveInstanceState就会调用
当Activity出栈时(比如点击back或者finish)onSaveInstanceState不会被执行
onRestoreInstanceState只有Activity真正被系统非正常杀死恢复的时候会调用

4.Activity的启动模式有哪些

模式概念适用场景
standard标准模式,每次启动Activity就会启动一个Activity实例适用于大部分场景
singleInstance单例模式,该模式下创建Activity实例时,只会创建一个只有该Activity的栈。之后的任何程序调用该Activity,只会调用该栈中的实例。呼叫来电页面,闹钟页
singleTop栈顶模式,启动该Activity时会判断栈顶是否为该Activity,如果是就直接调用,不再创建实例,回调onNewIntent方法,否则就会创建。通知消息打开的页面,耗时操作返回页
singleTask栈内模式,启动该Activity如果在目标栈内存在,则不创建实例,回调onNewIntent。如果指定的栈不存在,则创建一个栈并将Activity实例压入。如果指定的栈存在,则直接压入该实例。应用中的主页,多次点击之后返回

面试题

1.singleTop和singleTask有什么区别

singleTop:栈内可存在多个实例,默认进入启动它的任务栈
singleTask:栈内只有一个实例,由taskAffinity决定任务栈,会把栈中位于Activity之上的Activity都出栈

2.onNewIntent什么时候调用

当启动的Activity模式为singleTop,且位于栈顶,则会调用onNewIntent
当启动的Activity模式为singleTask,且位于目标栈中,则会调用onNewIntent

3.Activity什么时候调用onPause()后不调用onStop()

其他Activity主题是dialog或者透明时,Activity跳转的时候只会执行onPause不执行onStop

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值