前面的文章中,已经创建好了一个用户演示Activity生命周期的示例,但是由于那篇文章篇幅过长,所以分成两部分来写,在这篇文章中,将详细介绍Activity的生命周期。

了解Activity的生命周期是非常有必要的,在后面的文章中会涉及到数据的保存(也就是持久化)等功能,而保存时机的选择关乎用户体验,而了解Activity的生命周期会对时机的选择有更好的理解。

文档中,已经有了比较清晰的说明:

  • 如果一个Activity显示在最前端,它的状态时active或者是running
  • 如果一个Activity失去焦点,但是还能在屏幕上看到它,比如说,被一个非全屏的或者是透明的另一个Activity遮盖,它此时的状态是paused。一个处于paused状态的Activity,保持着所有自身的状态和信息,秉持着与window manager的联系,但是当系统内存不足时,可能会被系统终止
  • 如果一个Activity完全看不见了,被其他的Activity完全挡住,它的状态变成stopped。处于stopped的Activity虽然也保留着如同paused状态一样的特性,但是此时的它更容易被系统终止
  • 如果一个Activity处于paused或者stopped状态时,系统可以通过要求Activity结束或者强制kill的方式从内存中删除这个Activity,当它在此需要显示时,就需要restart和重新加载以前的数据。(可见,适时的保存数据的重要性)

用一个状态装换图来说明问题:

仔细品味这张图,和上面的说明,会很好的理解Activity的生命周期。接下来,用前面的示例程序来具体说明一下。在前面的示例程序中,写了很多空方法,方法中只是打印了一行日志,这些方法都是Activity在进行状态转换的时候要使用的方法。

  • 程序启动
    INFO/ActivityLifecycle: onCreate …
    INFO/ActivityLifecycle: onStart …
    INFO/ActivityLifecycle: onResume …
  • 点击一下第一个按钮,会弹出一个小对话框,主Activity在对话框的后面还是能看的见,此时的Activity的状态时paused
    INFO/ActivityLifecycle: onPause …
  • 然后,点击一下模拟器的返回按键,小对话框消失,返回到主Activity
    INFO/ActivityLifecycle: onResume …
  • 点击一下第二个按钮,一个新的Activity会代替当前的Activity
    INFO/ActivityLifecycle: onPause …
    INFO/ActivityLifecycle: onStop …
    这时候,主Activity的状态就变成了stopped了
  • 点击一下模拟器的返回按键,返回到主Activity
    INFO/ActivityLifecycle: onRestart …
    INFO/ActivityLifecycle: onStart …
    INFO/ActivityLifecycle: onResume …
  • 再次点击一下模拟器的返回按键,退出程序
    INFO/ActivityLifecycle: onPause …
    INFO/ActivityLifecycle: onStop …
    INFO/ActivityLifecycle: onDestroy …

注意一下第一个按钮和第二个按钮被点击之后,所执行的过程是不同的。然后可以进行各种组合的前进退出,通过观察日志了解Activity的生命周期。

Tags: ,

17 Responses to “设计Android的用户界面(四) -2”

  1. 如何通过观察日志了解Activity的生命周期呢?能不能告诉我。

  2. 发现了你的文章
    August 24th, 2009 at 4:34

    这些日志信息 为什么 在我的控制台看不到呢 请问你是在哪里看的呢?

  3. 可在logcat中查看,需要手工调出这个监视窗口

    window->show view->other->android 里面

  4. I would like to to argue that a trustworthy classification essay writing service can be a good assistant on the road of term paper format writing. Therefore, all people can use it anytime they would like to buy an essay uk.

  5. Hello! dagfkae interesting dagfkae site!

  6. Very nice site! cheap viagra

  7. Very nice site! [url=http://ypxaieo.com/oooxvty/2.html]cheap cialis[/url]

  8. Very nice site! cheap cialis http://ypxaieo.com/oooxvty/4.html

  9. Very nice site!

  10. Hello!
    cialis ,

  11. nJcCXAA

  12. That it does I suppose.

  13. broader developers future warm

  14. allows consensus engine

  15. http://www.roiding.com is very great. I enjoyed your blog a lot. Thank you.

  16. looks great! I hope to see more soon!

  17. I agree with the suggestions in the article.

Leave a Reply

You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>