弹出系统对话框,程序仍部分可见
onPause
对话框消失时
onResume
 
调用一个新的Activity,老的Activity不可见时
onPause->onStop
从新的Activity返回时
onRestart->onStart->onResume
 
正常运行的Activity正常结束时
onPause->onStop->onDestroy
 
onResume
这不是用来判断Activity是否对用户可见的最好方法。即使这个方法被调用后,也可能有一些系统窗口在我们的Activity前面,如keyguard。onWindowFocusChanged是最准确的。
对于一些没有通过类似managedQuery(android.net.Uri , String[], String, String[], String)这样的方法交给系统管理的Cursor来说,这个时候应该重新获取。因为,按照理论来说,在onStop时,你把它们deactive了。
 
假设Activity A启动一个Activity B,那么,系统会先调用A的onPause,然后调用B的onCreate、onStart、onResume。然后才会调用A的onStop方法。
因此,在旧的Activity的onPause返回之前,新的Activity不会被创建。因此,这里不要做太费时的事情。
onPause方法中建议做的操作有:停止动画这样大量消耗CPU的动作,使Activity的切换更快速;关掉相机这样独占式访问的资源。
 
后台Activity因为资源紧张被系统终止时,无论是否可见,都不会调用任何方法,除onSaveInstanceState。
 
通过android.os.Process.killProcess杀死时,不会调用任何方法,包括onSaveInstanceState.

关于状态保存:

onSaveInstanceState

当Activity被切换到后台(部分可见或者不可见,但己不与用户交互)时,就有可能因为资源紧张而被kill,会调用这个方法。

如果这个方法被调用的话,会在onStop之前,但与onPause谁先谁后不确定。

这个方法的默认实现中,保存了当前可见的View树的状态,重写时,如果要保留这个特性的话,调一下super.onSaveInstanceState。

onRestoreInstanceState

这个方法在onStart和onResume之间被调用。

绝大部分情况下,使用onCreate就可以恢复上一次保存的状态

旋转屏幕的时候需要对一些数据进行保存。有如下方法:

1.AndroidManifest.xml配置文件中的Activity标签下面添加:android:configChanges="orientation|keyboardHidden"

然后在activity中重写onConfigurationChanged()方法,每次旋转时会调用该方法,可以再该方法中处理数据[无论你怎么旋转都不会销毁当前的Activity,只会执行onConfigurationChanged()方法,因此只要在该方法中处理响应的数据即可

生命周期如下:

onCreate->onStart->onResume->onConfigurationChanged()->

onConfigurationChanged()

2. 如果销毁当前的Activity,那么就要重写Activity的两个方法onSaveInstanceState()和 onRestoreInstanceState(),显然从方法名字可以看出一个是保存

数据,一个是还原数据,生命周期如下:

onCreate->onStart->onResume->onSaveInstanceState

->onPause->onStop->onDestroy->onCreate->onStart

->onRestoreInstanceState->onResume

Activity生命周期与状态保存的更多相关文章

  1. Activity生命周期,状态保存恢复(经典)

    一.整体框架 二.main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&qu ...

  2. 【基础篇】activity生命周期及数据保存

    常见的Android 的界面,均采用Activity+view的形式显示的,一提到Activity,立即就能联想到Activity的生命周期与状态的保存. 下面先从Activity的生命周期开始说起  ...

  3. Android Fragment使用(三) Activity, Fragment, WebView的状态保存和恢复

    Android中的状态保存和恢复 Android中的状态保存和恢复, 包括Activity和Fragment以及其中View的状态处理. Activity的状态除了其中的View和Fragment的状 ...

  4. [转]: 两分钟彻底让你明白Android Activity生命周期(图文)!

    转自:http://blog.csdn.net/android_tutor/article/details/5772285 大家好,今天给大家详解一下Android中Activity的生命周期,我在前 ...

  5. Android Activity生命周期

    从android api文档摘抄出来的activity生命周期图如下: Activity有如下四种状态 a.活动状态  activity处于屏幕前台,获取到了焦点可以和用户进行交互,同一时刻只有一个a ...

  6. Android Activity生命周期详讲

    管理 Activity 生命周期 通过实现回调方法管理 Activity 的生命周期对开发强大而又灵活的应用至关重要. Activity 的生命周期会直接受到 Activity 与其他 Activit ...

  7. android Activity生命周期(设备旋转、数据恢复等)与启动模式

    1.Activity生命周期     接下来将介绍 Android Activity(四大组件之一) 的生命周期, 包含运行.暂停和停止三种状态,onCreate.onStart.onResume.o ...

  8. Activity生命周期 onCreate onResume onStop onPause (转)

    Android应用开发提高系列(6)——Activity生命周期 onCreate 和 onResume 在程序启动时候都会启动, 所有有些需要在onCreate onResume中都要实现的功能,之 ...

  9. 基础总结篇之一:Activity生命周期

    子曰:溫故而知新,可以為師矣.<論語> 学习技术也一样,对于技术文档或者经典的技术书籍来说,指望看一遍就完全掌握,那基本不大可能,所以我们需要经常回过头再仔细研读几遍,以领悟到作者的思想精 ...

随机推荐

  1. esriControlsMousePointer 控制鼠标指针

    axMapControl1.MousePointer = esriControlsMousePointer.esriPointerHourglass; 控制鼠标指针选项. 不变 值 描述 esriPo ...

  2. Struts2+JSON+JQUERY DEMO

    看到别人用了Struts2和JSON,自己也想练练手.记录下练习过程中遇到的问题,以便参考. 使用Maven新建项目: 先挂上pom.xml <project xmlns="http: ...

  3. POJ 3468 A Simple Problem with Integers(树状数组)

    题目链接:http://poj.org/problem?id=3468 题意:给出一个数列,两种操作:(1)将区间[L,R]的数字统一加上某个值:(2)查询区间[L,R]的数字之和. 思路:数列A,那 ...

  4. java知识积累——单元测试和JUnit(二)

    首先来复习一下几个重要知识点,然后接着进行一些介绍.在上一篇文章中,我曾经贴过下面这张图片: 在Which method stubs would you like to create?这里,现在结合4 ...

  5. Android开发之Android Context,上下文(Activity Context, Application Context)

    转载:http://blog.csdn.net/lmj623565791/article/details/40481055 1.Context概念Context,相信不管是第一天开发Android,还 ...

  6. [Codeforces676B]Pyramid of Glasses(递推,DP)

    题目链接:http://codeforces.com/problemset/problem/676/B 递推,dp(i, j)表示第i层第j个杯子,从第一层开始向下倒,和数塔一样的题.每个杯子1个时间 ...

  7. Android中使用广播机制退出多个Activity

    谷歌百度一下,Android中退出多个Activity的方法,大家讨论的很多. 在实习的时候,看到公司的项目退出多个Activity,是采用LinkedList方法,毕业设计的时候,也参照了那种方法. ...

  8. word编辑器解码集合

    $(document).ready(function () { $(".content").each(function () { var content = $(this).htm ...

  9. Firefox和Chrome浏览器导出书签

    Chrome浏览器: 或者直接在地址栏中输入:“chrome://bookmarks/#1”也可以 Firefox浏览器:

  10. UVa 10943 (数学 递推) How do you add?

    将K个不超过N的非负整数加起来,使它们的和为N,一共有多少种方法. 设d(i, j)表示j个不超过i的非负整数之和为i的方法数. d(i, j) = sum{ d(k, j-1) | 0 ≤ k ≤ ...