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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值