Android开发——Android生命周期

 

Activity的三种状态:

a)运行状态

b)暂停状态

c)停止状态

运行状态:

当Activity在屏幕的最前端,也就是当前显示页面时候,它是可见的并且有焦点,可以处理用户的操作:比如点击、双击、长按等,也就是激活运行状态,处理各个监听器的功能。

当内存不足的时候,Android会先封杀堆栈底层的Activity,也就是最先打开的Activity,类似于数组的堆栈压栈操作。

暂停状态:

在Activity可见但没有焦点,并且用户对Activity的操作没有响应,这样的状态是暂停状态。我在使用手机的时候,比如我打开了一个Activity,但在我退出的时候会弹出一个提示是否退出的对话框,这时候,我们之前打开的应用就变成了半透明效果并且处于暂停状态也没有焦点,我们做任何操作都无效;当前的焦点在提示退出的对话框上,所以这个对话框就处于运行状态,也就是激活状态中,我们可以做任何操作。

停止状态:

当Activity完全不可见的时候就处于停止状态。比如手机多任务状态运行的时候,很多程序都不在屏幕上显示,我们在不同的程序中切换不同的Activity,很多程序就在不停地做运行状态—>暂停状态—>停止状态的切换。这个过程就是Android程序的生命周期中要做的事情。

生命周期事件:

Activity状态的变化是随着我们的操作进入的,状态的改变会触发一些事件,也就是生命周期事件。一共有七个生命周期事件:

Void onCreate(Bundle savedInstanceState)

protected void onCreate(Bundle savedInstanceState)一个 Activity 的实例被启动时调用的第一个方法。一般情况下,我们都覆盖该方法作为应用程序的一个入口点,在这里做一些初始化数据、设置用户界面等工作。大多数情况下,我们都要在这里从 xml 中加载设计好的用户界面。

Void onStart()

该方法在 onCreate() 方法之后被调用,或者在 Activity 从 Stop 状态转换为 Active 状态时被调用。

Void onRestart()

Void onResume()

在 Activity 从 Pause 状态转换到 Active 状态时被调用。

Void onPause()

Void onStop()

在 Activity 从 Active 状态转换到 Stop 状态时被调用。一般我们在这里保存 Activity 的状态信息。

Void onDestroy()

在 Active 被结束时调用,它是被结束时调用的最后一个方法,在这里一般做些释放资源,清理内存等工作。

总结:

一、Activity从创建到进入运行状态所触发的事件:

onCreate() —>onStart()—>onResume()

二、当Activity从运行状态到停止状态所触发的事件:

onPause()—>onStop()

三、当Activity从停止状态到运行状态所触发的事件:

onRestart()—>onStart()—>onResume()

四、当Activity从运行状态到暂停状态所i触发的事件:

onPause()

五、当Activity从暂停状态到运行状态所触发的事件:

onResume()

具体关系如图所示

解释如下:

正在运行的Activity 处在在栈的最顶端,它是运行状态的;当有新Activity进入屏幕最上端时,原来的Activity就会被压入第二层,如果他的屏幕没有被完全遮盖,那么他处于Pause状态,如果他被遮盖那么他处于Stop状态。当然不管你出于任何一层,都可能在系统觉得资源不足时被强行关闭,当然关闭时在栈底的程序最先被关闭。

譬如:当你在程序中调用 Activity.finish()方法时,结果和用户按下 BACK 键一样:他告诉 Activity Manager该Activity实例可以被“回收”。随后 Activity Manager 激活处于栈第二层的 Activity 并重新入栈,把原 Activity 压入到栈的第二层,从 Running 状态转到 Paused 状态。

当你调用 Activity.finish()方法时,结果和用户按下 BACK 键一样:告诉 Activity Manager 该 Activity 实例完成了相应的工作,可以被“回收”。随后 Activity Manager 激活处于栈第二层的 Activity 并重新入栈,同时原 Activity 被压入到栈的第二层,从 Active 状态转到 Paused 状态。例如:从 Activity1 中启动了 Activity2,则当前处于栈顶端的是 Activity2,第二层是 Activity1,当我们调用 Activity2.finish()方法时,Activity Manager 重新激活 Activity1 并入栈,Activity2 从 Active 状态转换 Stoped 状态,Activity1. onActivityResult(int requestCode, intresultCode, Intent data)方法被执行,Activity2 返回的数据通过 data参数返回给 Activity1。

如上就是我对Android生命周期学习的总结。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值