zoukankan      html  css  js  c++  java
  • Android中Activity的生命周期

    安卓四大组件中之一--Activity,深入理解这个组件的生命周期,是学习安卓不可缺少的一部分。话不多说,就拿谷歌官方Api文档的解析图来看看吧。

    在安卓中Activity是以调用系列对应于生命周期中特定阶段的特定回调函数。来实现由Activiity的初始化到销毁的一系列状态。一个activity由一个回调函数序列开始,并且以一系列回调函数结束。需要注意的是当系统创建一个Activity时,所有的回调函数,其指向都是指向这个生命周期的顶部,使它可见可交互。

    启动一个Actiivity:

    从图上可以看出,一个应用程序通过onCreate()->onStart()->onResume().

    *当调用onCreated()时表明这个Activity创建完成,onCreated()方法在整个Activity生命周期只会调用一次,onCreated方法调用是瞬时的。

    *当调用onStart()是表明这个Activity已经可见了,但是还不具备交互功能,onStart方法也是瞬时的。

    *当调用onResumed()是表明这个Activity可见且可交互,到达金字塔最顶端。

    这就是Activity启动的过程。

    暂停和恢复一个Activity:

    例如,有时候,当当前Activity弹出了一个对话框是,当前Activity就被暂停了。由图可知,应用程序通过调用onPaused()暂停了一个Activity之后在通过onResum()恢复了这个Activity。

    *当用户专注于另外一个ActivityB时,当前Activity就会调用onPaused(),此时ActivityB处于半透明状态,Activity不可交互。

    *当用户从当前暂停状态回到Activity是,用户调用onResume()方法,恢复了Activity。

    *通常在onPaused()方法中释放一些占用内尺的部件,如:动画,广播,照相机,视频等等,并且提交用户想要保存的东西,而需要在onResume中出事化这些部件。

    停止和重启一个Activity:

    当用户从你的app切换到另一个app时,你的Activity就会停止,又或者,用户在使用你的app时接到了一个电话,当用户重新切换回你的app时,Activity又重启了。

    调用顺序:onPaused()->onStop->onReStart->onStart->onResume()

    *无论Activity停止的方式是哪种,都必须先调用onPaused()再调用onStart().

    *当停止时再返回时系统调用onReStart()

    *在调用onStop方法时,应该向cup执行更多耿密集的操作,如写入数据库。

    *onStart()的内容和onStop相对应。

    重新创建一个Activity:

    当用户按下了返回键,或者使用了finsh(),或者你的Activity很久没被使用又或者前台需要更多的资源,这都会使你的Activity销毁。当你的Activity在人为操作下销毁时,它的实例在内存就永久销毁了,而当Activity非人为销毁时,虽然实例销毁了但是内存依然会记得,而把它保存在一个Bundle对象的键值对中。这个Bundle对象通常情况下就是用来保存Activity的布局信息的。为了保存额外的有关activity状态的数据,需要重载onSaveInstanceState()回调方法,向Bundle对象中添加键-值对。当用户准备离开你的activity时系统将调用这个方法,并将它传递给Bundle对象以便你的activity意外销毁时可以被保存因为onCreate()方法在创建一个新的实例以及重建一个先前的实例都会被调用,在你试图读一个Bundle之前你必须检查它的状态是否是null。如果它是null,那么系统将会创建一个新的activity实例,而不是重新载入之前被销毁的一个。

  • 相关阅读:
    ETF上线技术要素
    oracle修改用户的schema
    list
    交易系统分类OMS/EMS
    类的大小2
    webpack5教程
    vue配置stylelint教程
    提高国内访问 GitHub 的速度的 9 种方案
    git常见的操作
    img 图像底部留白的原因以及解决方法
  • 原文地址:https://www.cnblogs.com/lovelyYakir/p/5677561.html
Copyright © 2011-2022 走看看