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()三个方法




更多相关文章

  1. Android使用Parcelable传递对象方法及注意事项
  2. 深入浅析Android手机卫士保存密码时进行md5加密
  3. Android(安卓)-- ContentProvider的使用及需要注意的点
  4. Android集成腾讯X5WebView
  5. Android(安卓): 如何在WebView显示的页面中查找内容
  6. 有关Android线程的学习
  7. 第二章:根据oschina开源的app代码快速构建自己站点的ANDROID APP
  8. 浅谈Java中Collections.sort对List排序的两种方法
  9. Python list sort方法的具体使用

随机推荐

  1. listview背景选择
  2. [置顶] Android(安卓)CardView简单使用方
  3. Android ButterKnife注解框架使用
  4. 01 Android应用的构成
  5. Android(安卓)获取闹钟引发的血案
  6. Android摇一摇功能的实现
  7. Android(安卓)ScrollView截图和图片保存
  8. Android Style与Theme .
  9. 对AndroidManifest.xml的一点理解
  10. Android获取手机经纬度