`
dss16694
  • 浏览: 148378 次
社区版块
存档分类
最新评论

Activity生命周期

 
阅读更多

Activity有三个状态:当它在屏幕前台时(位于当前任务堆栈的顶部),它是激活或运行状态。它就是响应用户操作的Activity。 当它上面有另外一个Activity,使它失去了焦点但仍然对用户可见时,它处于暂停状态。在它之上的Activity没有完全覆盖屏幕,或者是透明的,被暂停的Activity仍然对用户可见,并且是存活状态(它保留着所有的状态和成员信息并保持和窗口管理器的连接)。如果系统处于内存不足时会杀死这个Activity。当它完全被另一个Activity覆盖时则处于停止状态。它仍然保留所有的状态和成员信息。然而对用户是不可见的,所以它的窗口将被隐藏,如果其它地方需要内存,则系统经常会杀死这个Activity。


当Activity从一种状态转变到另一种状态时,会调用以下保护方法来通知这种变化:

void onCreate(Bundle savedInstanceState)
void onStart()
void onRestart()
void onResume()
void onPause()
void onStop()
void onDestroy()

 

这七个方法定义了Activity的完整生命周期。实现这些方法可以帮助我们监视其中的三个嵌套生命周期循环:

 Activity的完整生命周期自第一次调用onCreate()开始,直至调用onDestroy()为止。

 Activity在onCreate()中设置所有“全局”状态以完成初始化,
 而在onDestroy()中释放所有系统资源。

 例如,如果Activity有一个线程在后台运行从网络下载数据,它会在onCreate()创建线程,而在 onDestroy()销毁线程。

 

 Activity的可视生命周期自onStart()调用开始直到相应的onStop()调用结束。在此期间,用户可以在屏幕上看到Activity,
 尽管它也许并不是位于前台或者也不与用户进行交互。在这两个方法之间,我们可以保留用来向用户显示这个Activity所需的资源。
 例如,当用户不再看见我们显示的内容时,我们可以在onStart()中注册一个BroadcastReceiver来监控会影响UI的变化,而在onStop () 中来注消。onStart() 和 onStop() 方法可以随着应用程序是否为用户可见而被多次调用。

 

Activity的前台生命周期自onResume()调用起,至相应的onPause()调用为止。在此期间,Activity位于前台最上面并与用户进行交互。
 Activity会经常在暂停和恢复之间进行状态转换——例如当设备转入休眠状态或者有新的Activity启动时,将调用onPause() 方法。
 当Activity获得结果或者接收到新的Intent时会调用onResume() 方法。 
 
Activity的 onSaveInstanceState() 和 onRestoreInstanceState()并不是生命周期方法,它们不同于 onCreate()、onPause()等生命周期方法,它们并不一定会被触发。
当应用遇到意外情况(如:内存不足、用户直接按Home键)由系统销毁一个Activity时,onSaveInstanceState()才会被调用
但是当用户主动去销毁一个Activity时,例如在应用中按返回键,onSaveInstanceState()就不会被调用。因为在这种情况下,
用户的行为决定了不需要保存Activity的状态。通常onSaveInstanceState()只适合用于保存一些临时性的状态,而onPause()适合用于数据的持久化保存。
另外,当屏幕的方向发生了改变, Activity会被摧毁并且被重新创建,如果你想在Activity被摧毁前缓存一些数据,并且在Activity被重新创建后恢复缓存的数据。
可以重写Activity的 onSaveInstanceState() 和 onRestoreInstanceState()方法,如下:
public class PreferencesActivity extends Activity {
    private String name;
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
 name = savedInstanceState.getString("name"); //被重新创建后恢复缓存的数据
 super.onRestoreInstanceState(savedInstanceState);
    }
    protected void onSaveInstanceState(Bundle outState) {
 outState.putString("name", "liming");//被摧毁前缓存一些数据
 super.onSaveInstanceState(outState);
    }
}

分享到:
评论

相关推荐

    Activity生命周期与启动模式

    **Activity生命周期** Activity的生命周期包括了从创建到销毁的各个阶段,主要有以下7个关键状态: 1. **创建(Created)**:当Activity首次被创建时,会调用`onCreate()`方法。在这里,通常进行初始化工作,如...

    2020-实验1-Activity生命周期验证(已完成)1

    Activity生命周期的理解和管理对于编写高效、响应式的Android应用至关重要。本实验旨在深入探索Activity的生命周期,并通过实践来理解各个阶段的工作流程以及它们之间的转换。 首先,我们来看一下Activity的生命...

    activity生命周期

    这是Activity生命周期的第一个回调,通常在这里进行初始化工作,如设置布局、数据绑定等。 2. **启动(Started)**:`onStart()`方法标志着Activity可见但可能不完全在前台。用户可以看到Activity,但不能与其交互...

    Activity生命周期示例

    在Android应用开发中,Activity是用户界面的基本单元,它负责展示...在提供的`Activity_04`文件中,可能包含了演示这些生命周期方法变化的代码示例,通过学习和分析这些示例,开发者可以加深对Activity生命周期的理解。

    测试Activity生命周期

    "测试Activity生命周期"的DEMO旨在帮助开发者直观地了解和调试Activity在不同场景下的状态变化。在这个DEMO中,我们可以通过观察日志输出或使用Android Studio的调试工具来跟踪Activity的状态。 Activity的生命周期...

    Activity生命周期总结

    ### Activity 生命周期总结 在 Android 开发中,理解 Activity 的生命周期是非常重要的,因为它直接影响到应用程序的行为、性能以及用户体验。本文将详细介绍 Activity 生命周期中的各个方法及其触发条件,并通过...

    Android activity生命周期示例

    本示例项目“Android activity生命周期示例”旨在帮助开发者深入理解Activity的生命周期及其各个阶段,这对于优化用户体验和资源管理至关重要。 Activity的生命周期包括以下几个主要状态: 1. **创建(Created)**...

    Activity生命周期分析

    这是Activity生命周期中的活跃状态。 - `onPause()`:当Activity即将被另一个Activity覆盖,但仍然部分可见时,系统调用`onPause()`。在此方法中,你应该保存临时数据,但不应执行耗时操作,因为它会影响新Activity...

    Activity生命周期demo

    谷歌官方提供的Activity生命周期示例("Activity lifecycle demo")是一个实用的教学工具,帮助开发者直观地理解Activity在不同情况下的状态变化。 这个demo最初是基于Eclipse开发的,但已经转化为更适合现代开发...

    activity生命周期函数

    7. onDestroy():Activity即将被销毁时调用,这是Activity生命周期的最后阶段。在此阶段,可以做彻底的清理工作,例如关闭数据库连接、取消定时任务等。 二、Activity与Fragment的生命周期 Fragment是Android 3.0...

    android activity 生命周期详细介绍

    ### 一、Android Activity生命周期介绍 #### 1. onCreate() 当Activity首次创建时被调用,这是初始化Activity的最佳时机。在该方法中通常会执行一些初始化操作,比如设置布局文件、初始化UI组件等。 示例: ``` @...

    android Activity生命周期详解(图文)

    总之,深入理解Activity生命周期和其背后的源码逻辑,对于编写高效、响应迅速且用户体验优秀的Android应用至关重要。开发者应熟练掌握这些知识点,以便在设计和调试应用时能得心应手。通过实践和分析ActivityDemo,...

    Activity生命周期图

    很好的一张Activity生命周期图,可以很清楚了解Activity生命周期的流程图

    Activity生命周期Demo

    在这个"Activity生命周期Demo"中,我们将深入探讨Activity如何启动、运行、暂停、停止以及销毁的过程,以及在这些状态转换中如何适当地处理程序逻辑。 1. **Activity生命周期的基本阶段** - **创建(Created)**: ...

    深入理解Activity生命周期

    这是Activity生命周期的第一个回调,通常在这里进行初始化工作,如设置布局、绑定数据等。 2. **可见(Visible)**:Activity从不可见变为可见,但可能还在启动过程中,此时调用`onStart()`。在这个阶段,Activity...

    测试Android Activity生命周期Demo

    本示例“测试Android Activity生命周期Demo”旨在通过实际代码帮助开发者理解并掌握Activity的生命周期,这对于创建稳定、高效的Android应用至关重要。 Activity的生命周期包括了多个关键状态,如初始化、启动、...

    设备旋转与Activity生命周期

    标题“设备旋转与Activity生命周期”所指的知识点主要是Android中Activity如何响应设备的屏幕方向变化。Activity是Android应用程序的基本组件,它负责与用户进行交互。在设备旋转时,系统会触发Activity的生命周期...

    Activity生命周期演示

    日志追踪(完成以下六步、明白android的四种状态的生命周期和相互切换): 1、启动app、查看控制台输出,发现依次触发onCreate、onStart、onResume这三个方法 2、点击按钮(弹窗风格的Activity),控制台输出onPause...

    Android学习3——Activity生命周期

    在“Android学习3——Activity生命周期”这个主题中,我们将深入探讨Activity如何启动、运行、暂停、停止以及销毁,并了解每个状态之间的转换。 Activity生命周期主要包括以下几个关键状态: 1. **初始状态...

Global site tag (gtag.js) - Google Analytics