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

    http://blog.sina.com.cn/s/blog_6420e7480100h1vv.html
    Android被设计用于开发独特要求的移动应用程序。尤其,Android认为大多数移动设备上的资源(例如:内存和电池)是有限的,并提供了一些机制以保持这些资源。这些机制也体现在AndroidActivity生命周期中,生命周期描绘了一个Activity从创建到完成运行的过程中的状态或事件。这个生命周期也可以概略的用下图来描述:
    图:Android Activity生命周期



    通过对Activity类的事件方法重载以及实例化方法,你的Activity将监视并且相应下面这些事件:
    onCreate
    当你的Activity被第一次创建时调用。在这个地方你将创建你的视图,打卡你的Activity需要使用的任何持久数据文件,并且初始化你的Activity。当调用onCreate时,Android框架将同时传递一个以前运行该Activity存储的状态Bundle对象。

    onStart
    在你的Activity显示到屏幕之前调用。一旦onStart运行完毕,如果你的Activity能够成为显示于屏幕的前端Activity,控制将会传递到onResume。如果这个Activity不能成为运行于屏幕的前端Activity,控制将传递到onStop方法。

    onResume
    当你的Activity成为屏幕前端Activity后onResume将被立刻调用。在这个时间点你的Activity处于运行状态并且能与用户进行交互。你可以接受键盘和触摸输入,并在屏幕上显示你的用户界面。当你的Activity失去屏幕前端焦点时onResume也会被调用,并且这个Activity最终退出,而另一Activity将被弹到前端。这也是你的Activity将开始(或恢复)的地方,并且可以做一些需要的事情比如更新用户界面(例如:接收位置更新或者运行一个动画)。

    onPause
    当Android试图恢复一个不同的后端Activity到前端时调用。在这个时候你的Activity将不能在访问屏幕,所以你应该做一些节约电池和CPU周期的事情。如果你在运行一个动画,那么将不会有人再看到它,所以你应该暂停它的运行知道它再次被切换到屏幕前端。你的Activity需要利用这个方法去保存再次恢复它到前端的需要的任何状态——当然不需要担保你的Activity一定将被恢复。如果你的移动设备运行出现内存溢出,并且没有磁盘上也没有可用的虚拟内存扩展,那么你的Activity可能必须为需要内存的系统进程让路。一旦你退出此方法,Android可能在任何时候杀掉你的Activity而不会返回任何控制。

    onStop
    当你的Activity不再可见时调用,或者当另一个Activity被拿到前端或者你的Activity被销毁时也会调用此方法。

    onDestroy
    在你的Activity被销毁之前你还有一次机会可以做任何操作。通常你到达这个时间点是因为Activity已经完成框架也会调用它的完成方法。但是如先前所说,调用这方法还因为Android需要回收你的Activity消费的资源。

    利用这些方法尽可能提供最好的用户体验是重要的。这也是本书讨论移动变成与桌面编程之间有何不同的第一个地方,在后面的章节中还会有许多类似的地方。如果你在编写众多Activity时考虑到Activity生命周期,你的用户将会满意而且你也将最终受益。

    上面这段文章翻译自:
    Android Application Development
    O'Reilly May 2009: First Edition
    ISBN: 978-0-596-52147-9
    by Rick Rogers, John Lombardo, Zigurd Mednieks, and BlakeMeike

    另外:

    HOME键:

    当我们打开应用程序时,比如浏览器,我正在浏览NBA新闻,看到一半时,我突然想听歌,这时候我们会选择按HOME键,然后去打开音乐应用程序,而当我们按HOME的时候,Activity先后执行了onPause()->onStop()这两个方法,这时候应用程序并没有销毁
    而当我们再次启动ActivityDemo应用程序时,则先后分别执行了onRestart()->onStart()->onResume()三个方法

    BACK键:

    当我们按BACK键时,我们这个应用程序将结束,这时候我们将先后调用onPause()->onStop()->onDestory()三个方法


    Keep it simple!
    作者:N3verL4nd
    知识共享,欢迎转载。
  • 相关阅读:
    【C++标准库】C++11新特性
    使用线程池
    Halcon相机硬触发采集图片
    C#之线程同步
    多线程之异常处理
    java基础 Arrays
    java基础 static关键字
    java基础 String
    c# 更新web.config
    java 基础
  • 原文地址:https://www.cnblogs.com/lgh1992314/p/5834769.html
Copyright © 2011-2022 走看看