android生命周期深入分析(一)_Android

Android 系统在Activity 生命周期中加入一些钩子,我们可以在这些系统预留的钩子中做一些事情。
例举了 7 个常用的钩子:
protected void onCreate(Bundle savedInstanceState)
protected void onStart()
protected void onResume()
protected void onPause()
protected void onStop()
protected void onRestart()
protected void onDestroy()

简要说明
onCreate(Bundle savedInstanceState):创建activity时调用。设置在该方法中http://www.myexception.cn/,还以Bundle中可以提出用于创建该 Activity 所需的信息。
onStart():activity变为在屏幕上对用户可见时,即获得焦点时,会调用。
onResume():activity开始与用户交互时调用(无论是启动还是重新启动一个活动,该方法总是被调用的)。
onPause():activity被暂停或收回cpu和其他资源时调用,该方法用于保存活动状态的。。
onStop():activity被停止并转为不可见阶段及后续的生命周期事件时,即失去焦点时调用。
onRestart():重新启动activity时调用。该活动仍在栈中,java.io.UnsupportedEncodingException而不是启动新的活动。
onDestroy():activity被完全从系统内存中移除时调用,该方法被调用可能是因为有人直接调用 finish()方法 或者系统决定停止该活动以释放资源。

横竖屏切换
1 切换到横屏
onSaveInstanceState
onPause
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume

2 切换到竖屏,销毁了两次
onSaveInstanceState
onPause
onStop
onDestroyonCreate
onStart
onRestoreInstanceState
onResume
onSaveInstanceState
onPause
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume

3 修改AndroidManifest.xml,把该Activity添加 android:configChanges="orientation",切横屏,只销毁一次
onSaveInstanceState
onPause
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume

4 再切回竖屏,发现不会再打印相同信息,但多打印了一行onConfigChanged
onSaveInstanceState
onPause
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume
onConfigurationChanged

5 更改 android:configChanges="orientation" 改成 android:configChanges="orientation|keyboardHidden",切横屏,就只打印onConfigChanged
onConfigurationChanged

6 切回竖屏
onConfigurationChanged
onConfigurationChanged

总结
1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次
2、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次
3、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法

时间: 2024-12-11 15:12:03

android生命周期深入分析(一)_Android的相关文章

android生命周期深入分析(二)_Android

在 Android 中,多数情况下每个程序都是在各自独立的 Linux 进程中运行的.当一个程序或其某些部分被请求时,它的进程就"出生"了:当这个程序没有必要再运行下去且系统需要回收这个进程的内存用于其他程序时,这个 进程就"死亡"了.可以看出,Android 程序的生命周期是由系统控制而非程序自身直接控制.这和我们编写桌面应用程序时的思维有一些不同,一个桌面应用程序的进程也是在其他进程或用户请求时被创 建,但是往往是在程序自身收到关闭请求后执行一个特定的动作(比如

android生命周期深入分析(二)

在 Android 中,多数情况下每个程序都是在各自独立的 Linux 进程中运行的.当一个程序或其某些部分被请求时,它的进程就"出生"了:当这个程序没有必要再运行下去且系统需要回收这个进程的内存用于其他程序时,这个 进程就"死亡"了.可以看出,Android 程序的生命周期是由系统控制而非程序自身直接控制.这和我们编写桌面应用程序时的思维有一些不同,一个桌面应用程序的进程也是在其他进程或用户请求时被创 建,但是往往是在程序自身收到关闭请求后执行一个特定的动作(比如

android生命周期深入分析(一)

Android 系统在Activity 生命周期中加入一些钩子,我们可以在这些系统预留的钩子中做一些事情. 例举了 7 个常用的钩子: protected void onCreate(Bundle savedInstanceState) protected void onStart() protected void onResume() protected void onPause() protected void onStop() protected void onRestart() prot

Android开发之activity的生命周期详解_Android

本文实例讲述了Android activity的生命周期.分享给大家供大家参考,具体如下: activity类处于android.app包中,继承体系如下: 1.Java.lang.Object 2.android.content.Context 3.android.app.ApplicationContext 4.android.app.Activity activity是单独的,用于处理用户操作.几乎所有的activity都要和用户打交道,所以activity类创建了一个窗口,开发人员可以通

Android Activity生命周期详解_Android

Activity 的生命周期. 一.理解Activity Activity是Android程序的4大组件之一. Activity是Android程序的表示层.程序的每一个显示屏幕就是一个Activity. 学过WEB开发的同学,可以把Activity理解成网页中的一个JSP文件:或者你可以把它理解成一个Windows的窗口. 下面看一下Activity类的继承关系:    从这里可以看到Activity是Context类的子类,大家对此先有个印象.  二.理解Activity的生命周期 手机最重

《Android应用开发攻略》——1.6 理解Android生命周期

1.6 理解Android生命周期 Ian Darwin1.6.1 问题 Android应用没有"主"(main)方法:你必须了解它们如何开始和停止.1.6.2 解决方案 android.Activity类提供许多明确定义的生命周期方法,在应用程序启动.挂起.重新启动等情况下调用,还提供了一个方法,用于将活动标记为完成.1.6.3 讨论 你的Android应用程序运行于自己的UNIX进程中,所以一般来说不会直接影响其他运行中的应用程序.Dalvik VM与操作系统接口,在应用程序启动.

Android静态变量的生命周期 简单介绍_Android

Android是用Java开发,其静态变量的生命周期遵守Java的设计.我们知道静态变量是在类被load的时候分配内存的,并且存在于方法区.当类被卸载的时候,静态变量被销毁.在PC机的客户端程序中,一个类被加载和卸载,可简单的等同于jvm进程的启动和结束.那么在Android中呢?用的Dalvik vm也是一样的.不过Android不太突出的进程概念,所以对静态变量的生命周期就会感觉模糊,这种模糊对于值类型是无所谓的,如果是静态的对象引用,则与内存回收.内存泄漏这些问题有关,有必要加深研究和理解

Android编程中的四大基本组件与生命周期详解_Android

本文实例讲述了Android编程中的四大基本组件与生命周期.分享给大家供大家参考,具体如下: Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器. 一:了解四大基本组件 Activity : 应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应. Activity之间通过Intent进行通信.在Intent 的描述结构中,有两个最

实例讲解Android应用开发中Fragment生命周期的控制_Android

一.Fragment的生命周期初探 因为Fragment必须嵌入在Acitivity中使用,所以Fragment的生命周期和它所在的Activity是密切相关的. 如果Activity是暂停状态,其中所有的Fragment都是暂停状态:如果Activity是stopped状态,这个Activity中所有的Fragment都不能被启动:如果Activity被销毁,那么它其中的所有Fragment都会被销毁. 但是,当Activity在活动状态,可以独立控制Fragment的状态,比如加上或者移除F