美文网首页
Andorid基础组件之Activity

Andorid基础组件之Activity

作者: 小白象码农 | 来源:发表于2018-09-04 17:06 被阅读16次

本篇主要复习Activity的清单如下:

* 生命周期解析

* 四种启动模式


一.生命周期的全解析

1.Q:典型情况下Activity的生命周期

a.onCreater()

状态:Activity正在初建
任务:做初始化工作,如setViewContent界面资源,初始化数据
注意:此方法的传参Bundle为该Activity上次被异常情况销毁时保存的状态信息

b.onStart()

状态:Actvity正在启动,这时Activity可见但不在前台,无法跟用户交互

c.onResume()

状态:Activity获得焦点,此时Actvity可见且在前台活动.

d.onPause()

状态:Activity正在停止,这时Activity前台可见但无法与用户交互,
任务:可做数据存储,停止动画等操作.
注意:Activity切换时,旧Activity的onPause会先执行,才会启动新的Activity

e.onStop()

状态:Avtivity即将停止
任务:可做稍微轻量级回收工作,如取消网络连接,注销广播接收器等
注意:新Activity是透明主题时,旧Activity就不会走onStop.

f.onDestroy()

状态:Activity即将销毁
任务:做回收工作,资源释放。

g.onRestart()

状态:Activity重新启动,Activity由后台切换到前台,由不可见到可见


onStart()跟onResume(),onPause()跟onStop()的区别 :onStart与onStop是从Activity是否可见这个角度调用的,onResume和onPause是从Activity是否显示在前台这个角度来回调的,在实际使用没其他明显区别。


2.Activity生命周期的切换过程

a.启动一个Activity:

  • onCreate()-->onStart()-->onResume()

b.打开一个新的Activity:

  • 旧Activity的onPause()-->新Activity的onCreate()-->onStart()-->onResume()-->旧Activity的哦那Stop()

c.1返回到旧Activity1:

  • 新Activity的onPause()-->旧Activity的onRestart()-->onStart()-->onResume()-->旧Activity的onStop()-->onDestroy();

d.Activity1上弹出对话框Activity2:

  • Activity1的onPause()-->Activity2的onCreate()-->onStart()-->onResume()

e.关闭屏幕/按Home键:

  • Activity2的onPause()-->onStop()-->Activty1的onStop()

f.点亮屏幕/回到前台:

  • Activity2的onRestart()-->onStatr()-->Activity1的onRestart()-->onStart()-->Activty2的onResume()

g.关闭对话框Activity2:

  • Activity2的onPause()-->Activty1的onResume()-->Activity2的onStop()-->onDestroy()

h.销毁Activity1:

  • onPause()-->onStop()-->onDestroy().

3.Activity生命周期各阶段

a.完整生命周期

Activity在onCreate()和onDestroy()之间所经历的.
在onCreate()中完成各初始化操作,在onDestroy()中释放资源

b.可见生命周期:

Activity在onStart()和onStop()之间所经历的
活动对于用户的可见的,但仍无法与用户进行交互

c.前台生命周期:

Activity在onResume()和onPause()之间所经历的
活动可见,且可交互.

二.Activity四种启动模式

1.Q:设置Activity启动模式的方法

在AndroidManifest.xml中给对应的Activity设定属性
android:launchMode="standard|singleInstance|single Task|singleTop"。

2.Q:Activity的四种launchMode
a.standard:标准模式, 默认模式

  • 含义:每次启动一个Activity机会创建一个新的实例
  • 注意:使用ApplicationContext去启动standard模式Activity就会报错。因为standard模式的Activity会默认进入启动它所属的任务栈,但是由于非Activity的Context没有所谓的任务栈。

b.singleTop:栈顶复用模式

  • 含义:如果新Activity已经位于任务栈的栈顶,就不会创建,并回调onNewIntent(intent)方法;

c.singleTask:栈内复用模式

  • 含义:只要该Activity在一个任务栈中存在,都不会创建,并回调onNewIntent(intent)方法。如果不存在,系统会先寻找是否存在需要的栈,如果不存在该栈,就创建一个任务栈,并把该Activity放进去;如果存在,就会创建到已经存在的栈中。

d.singleInstance:单实例模式

  • 含义: 具有此模式的Activity只能单独位于一个任务栈中,且此任务栈中只有唯一一个实例

希望这篇文章对你有帮助~
参考文档链接:
minmin_1123_要点提炼|开发艺术之Activity

相关文章

网友评论

      本文标题:Andorid基础组件之Activity

      本文链接:https://www.haomeiwen.com/subject/samtuftx.html