`

Activity生命周期总结

阅读更多

Android中用于显示的容器是Activity,一个Activity对应一个显示页面。

 

 

  • Activity生命7方法

Activity对象运行与它自己的7个方法密切相关,从对象的创建到销毁,这7个方法在Activity不同阶段运行,具体的方法介绍如下表格所示:

 

Method

Description

Killable

Next

onCreate

当启动新的Activity的时候被调用

No

onStart()

onStart

Activity对用户即将可见时调用

No

onResume() or onStop()

onRestart

重新启动Activity时调用(此方法是重启留在缓存中的Activity

No

onStart()

onResume

Activity界面可与用户交互时调用

No

onPause()

onPause

当系统要启动一个其他的activity时调用,用于保存当前数据

Yes

onResume() or onStop()

onStop

Activity已经不可见时调用

Yes

onRestart() or
onDestroy()

onDestroy

Activityfinish或手机内存不足被销毁的时候调用

Yes

nothing

 

 

 

  • Activity LifeCycle

Google官方提供了Activity LifeCycle的运行图,个人觉得官方提供的图非常简洁明了地介绍了Activity的运行周期:


如上图所示,当启动Activity1时,首先调用onCreate方法初始化Activity的内容,当Activity显示出来的时候调用onStar方法(此时Activity只能看不能点击使用),当Activity可以被点击时,则调用onResume方法;

如果新一个Activity2完全覆盖原Activity1,首先会让Activity1执行onPause方法暂存Activity1的数据,然后依次执行onCreateonStartonResume方法启动Activity2,最后因为Activity1会被Activity2完全覆盖,所以会执行Activity1onStop方法;

另一种情况,如果新Activity2未完全覆盖Activity1(可能只是一个弹出层),则运行流程与上面说的执行流程相同,只是不会执行Activity1的onStop方法;

如果点击手机上的“返回”按钮,当前Activity对象会被销毁,此时就会执行onDestory方法。

 

 

  • AndroidTask

AndroidTask是一个Activity栈,保存的是所有正运行的applicationActivity数据,Task中的Activity可以分属于不同的application,一个Activity栈也可能是由一个或多个Task组成,Task数据仅仅是临时保存,若手机内存不足或长时间未使用该applicationAndroid会自动销毁Task部分Activity数据。

 

  • onSaveInstanceState保存数据
前面提到:Activity处于onPause、onStop和onDestory状态时,如果手机内存资源紧缺就会销毁Activity,这样导致当前Activity填写的数据都化为乌有。Activity含有onSaveInstanceState方法,该方法的参数Bundle可以保存数据,即使当前Activity被销毁,Bundle也是存在的。这样Activity再次启动后onCreate方法的参数Bundle对象其实就是onSaveInstanceState的Bundle对象,所以可以在onCreate方法中再取出Bundle对象中的数据。
 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        if(savedInstanceState!=null && savedInstanceState.containsKey(ET_KEY)){
        	EditText et = (EditText)findViewById(R.id.et);
        	et.setText(savedInstanceState.getString(ET_KEY));
        }
    }
    
	@Override
	protected void onSaveInstanceState(Bundle outState) {
		super.onSaveInstanceState(outState);
		EditText et = (EditText)findViewById(R.id.et);
		outState.putString(ET_KEY, et.getText().toString());
	}
 

 

我的百度文库有关于Android Activity生命周期的ppt,免费下载,希望对大家有所帮助:

http://wenku.baidu.com/view/db19524ce518964bcf847cf9.html

 

附Activity生命周期例子,版本2.1

  • 大小: 109.4 KB
1
0
分享到:
评论

相关推荐

    Android中的Activity生命周期总结

    Activity生命周期一般分为四个基本状态,分别是活动状态(running),暂停状态(paused),停止状态(stopped)和死亡状态。 1.活动状态(running) 活动状态一般是指该Activity正处于屏幕最显著的位置上显示,即该Activity...

    Android Activity生命周期

    描述 Android Activity生命周期之间的关系

    Android实验二:Activity的生命周期及Intent

    1、设计界面,包括四个按钮,两个文本框。单击对应按钮可以启动对应...假定Activity A为启动Activity。 2、修改 Activity 的启动模式 LaunchMode,并通过 Log 信息来体会不同启动模式所对应的Activity 和 task 的关系

    实验一Android环境构建与Activity生命周期(1).doc

    实验一Android环境构建与Activity生命周期 一、 实验内容: 1、页面要求:主页面三个按钮。 2、功能要求:点击按钮分别调用:内部的Activity、自定义的Activity、结束当前 的Activity。 二、实验要求: 1. 利用几个...

    Android编程之基于Log演示一个activity生命周期实例详解

    主要介绍了Android编程之基于Log演示一个activity生命周期,结合完整实例形式较为详细的分析总结了Log演示activity生命周期的具体用法及Log的具体使用方法,需要的朋友可以参考下

    Android Activity横竖屏切换生命周期详解

    关于Activity生命周期和横竖屏切换时,生命周期的执行过程,网上有很多文章。但是都写的很模糊,并且不完善。一般的我们去切换屏幕方向都是不希望Activity被重新创建,这时就需要对一些属性进行设置,或者使用代码...

    两分钟让你彻底明白Android Activity生命周期的详解(图文介绍)

    首先看一下Android api中所提供的Activity生命周期图(不明白的,可以看完整篇文章,在回头看一下这个图,你会明白的): Activity其实是继承了ApplicationContext这个类,我们可以重写以下方法,如下代码: 代码如下: ...

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

    本篇文章主要介绍了android基础总结篇之一:Activity生命周期,想要学习的可以了解一下。

    Activity基础知识总结

    文档通过代码实践总结了Activity的生命周期方法,Launcher Mode启动方式,Intent Filter的匹配规则。同时文档中用截图记录关键的Log信息。文件中也包含了代码可以方便的学习和理解Activity。

    Android生命周期详解

    今天给大家详解一下Android中Activity的生命周期,我在前面也曾经讲过这方面的内容,但是像网上大多数文章一样,基本都是翻译Android API,过于笼统,相信大家看了,会有一点点的帮助,但是还不能完全吃透,所以我...

    AndroidX Fragment探究-生命周期

    文章目录概述源码探究Fragment的生命周期派发状态常量值更新FragmentManagerImpl的生命周期状态onCreateonStartonPostResumeonPauseonStoponDestroy小结更新Fragment的生命周期状态总结 概述 Fragment的生命周期依托...

    Android开发指南中文版

    Activity生命周期 17 调用父类 18 服务生命周期 21 广播接收器生命周期 22 进程与生命周期 22 用户界面User Interface 24 视图层次View Hierarchy 24 布局Layout 25 部件Widgets 26 用户界面事件UI Events 26 菜单...

    Android开发宝典.rar

    Activity生命周期 17 调用父类 18 服务生命周期 21 广播接收器生命周期 22 进程与生命周期 22 用户界面User Interface 24 视图层次View Hierarchy 24 布局Layout 25 部件Widgets 26 用户界面事件UI Events ...

    Android开发指南中文版-----应用程序框架

    Activity生命周期 17 调用父类 18 服务生命周期 21 广播接收器生命周期 22 进程与生命周期 22 用户界面User Interface 24 视图层次View Hierarchy 24 布局Layout 25 部件Widgets 26 用户界面事件UI Events 26 菜单...

Global site tag (gtag.js) - Google Analytics