前面的文章中,已经创建好了一个用户演示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: ,

4 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.

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>