Activity生命周期及启动模式

Activity生命周期:
onCreate

Activity第一次被创建的时候进行回调,一般都会重写该方法初始化布局资源,setContextView(Layout),初始化控件

onStart

该方法表示当前Activity正在启动,此时Activity已经处于可见状态,但是屏幕上并没有显示且无法与客户进行交互
注:onStart方法和onResume方法的区分就是Activity都是处于可见状态,但是后者可以与用户进行交互,通俗说就是可以获取到焦点

onResume

此方法表示当前Activity可见并可以与用户进行交互
当此Activity调用了onPause和onStop方法后,重新回到前台会调用此方法,从而可以在此方法内初始化一些资源,例如重新初始化在onPause方法中释放的资源

onPause

此方法表示当前Activity正在停止,一般此方法调用后会立即执行onStop方法,可以在此方法中释放一些资源,但是不能太耗时,原因是因为跳转到下一个Activity的时候会先执行完此方法才会执行下一个Activity的onResume方法

onStop

一般在onPause方法后立刻执行,表示Activity即将停止或完全被覆盖,此时的Activity不可见并仅在后台执行,不可以执行耗时操作
注:如果是在当前Activity上弹出一个对话框(Dialog)的话,如果不完全覆盖整个屏幕的话就不会调用onStop方法,

onDestroy

表示当前Activity正在被销毁,生命周期最后一个执行方法,可以进行一些资源的释放和销毁工作

onRestart

此方法表示Activity正在重新启动,由不可见变为可见,如跳转到另一个Activity后(onPause和onStop)再返回,会调用此方法

onSaveIntanceState

当Activity生命周期不正常或非正规销毁等,可以用来临时保存一些非永久数据,一些常用基础控件如TextView等系统会自动保存,调用super,可以将其他重要数据保存在Bundle对象中,可以在onRestoreInstanceState中返回的Bundle中获取,也可以在onCreate中获取
此方法调用的几个事件:按Home键(Activity会进入后台);电源键锁屏(屏幕关闭,进入后台);启动其他Activity(Activity被压入了任务栈的栈底);横竖屏切换(会销毁当前Activity重建)可以在AndroidMainfest清单文件中的Activity中设置android:configChanges="keyboardHidden|orientation|screenSize"
注意事项:用户主动退出按返回键或调用finish()方法销毁不会调用此方法;此方法一定在onStop方法之前调用

onRestoreIntanceState

在Activity被系统销毁后再恢复Activity的时候会调用,可以通过Bundle对象获取之前保存的数据

Activity启动模式:
standard(默认模式)

默认的启动模式,如不指定android:LaunchMode,则默认为此模式
此模式是每启动一个Activity就会重新创建一个新的实例,如A-A-A-B,则任务栈中从上到下为BAAA

singleTop(栈顶复用模式)

此模式下如果新的Activity已经处于栈顶,则Activity不会重新创建新的实例,会调用onNewIntent方法,并且onCreate和onStart方法不会调用,如果新的Activity不位于栈顶,则会重新创建新的实例
例子:A-B-A-A-B-B,则任务栈中从上到下为BAABA

singleTask(栈内复用模式)

此模式下如果新的Activity已经处于栈内,则Activity不会重新创建新的实例,不管是否处于栈顶,都会复用,并将栈内它上面所有的Activity全部移出栈,并调用onNewIntent方法
例如:A-A-B-B-C-C-B则任务栈从上到下为BA 另一个例子:A-A-B-B-C-C-B-A则任务栈从上到下为A

singleInstance(全局唯一模式)

此模式下Activity会单独占用一个Task栈,具有全局唯一性,整个手机系统中就只有这么一个实例,后续的请求中都不会创建新的Activity,除非这个特殊的任务栈被销毁了
如果在启动此模式下的Activity时,已经存在此全局唯一实例,则会将其任务调度到前台,重新调用此实例

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值