Android入门:Activity生命周期


一、Activity生命周期介绍


我们在学Java Web时会学到Servlet的生命周期,因此对生命周期的概念已经有一定了解,简单地说就是某个事物从出生到死亡的过程。

Activity也存在声明周期,从Activity被创建到最后被销毁;Activity运行时可能会受到一些突发事件的影响,例如在使用Activity时突然来了一个电话,则Activity需要在生命周期函数中设置;

下图是Activity生命周期中最经典的图:


Android入门:Activity生命周期_第1张图片


7个生命周期方法:


(1)onCreate(Bundle bundle);创建Activity

(2)onStart();开启Activity时调用

(3)onResume();在Activity显示时调用

(4)onPause();在某个Activity被覆盖,但是又没有被完全覆盖时调用

(5)onStop();在某个Activity被覆盖时调用

(6)onRestart();在某个Activity被覆盖后又重新显示时调用

(7)onDestroy();最后销毁时调用


这些方法总结后能够有几个规律:


(1)onCreate()-->onStart()-->onResume()为开始显示Activity的过程

(2)onResume()-->onPause()为此Activity不在最前面,但是还是可见的过程

(3)onResume()-->onPause()-->onStop()为Activity被覆盖的过程

(4)onPause()-->onResume()为Activity从原本可见但不是最前面到重新到最前面的过程

(5)onStop()-->onRestart()-->onStart()-->onResume()为Activity从不可见到显示在最前面的过程


二、非生命周期但重要的方法


当应用遇到意外情况(如内存不足,用户直接按home键等)需要保存一些临时数据,比如你填写EditText写到一半,你按错键了,按成home键,则如果默认情况,会丢失全部的输入信息,但是这样对用户来说就会有损失,因此我们需要下面两个方法:

1.onSaveInstanceState(Bundle bundle);  意外情况下保存数据

当意外发生时保存数据调用

由运行状态进入暂停状态或停止状态调用

屏幕旋转时调用

2.onRestoreInstanceState(Bundle bundle); 恢复数据


比如:

Android入门:Activity生命周期_第2张图片


我们要做到保留EditText输入的信息,因此代码为:

package com.xiazdong.activity.life;

import android.app.Activity;
import android.os.Bundle;
import android.widget.EditText;

public class MainActivity extends Activity {
	private EditText editText ;
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        editText = (EditText)this.findViewById(R.id.editText);
    }

	@Override
	protected void onRestoreInstanceState(Bundle savedInstanceState) {
		String name = savedInstanceState.getString("name");	//恢复EditText的数据
		editText.setText(name);
		super.onRestoreInstanceState(savedInstanceState);
	}

	@Override
	protected void onSaveInstanceState(Bundle outState) {	//保存EditText的数据
		outState.putString("name", editText.getText()+"");
		super.onSaveInstanceState(outState);
	}
    
}

三、其他一些设置


<activity android:theme="@android:style/Theme.Dialog"/>可以将Activity设置成窗口模式;





你可能感兴趣的:(java,android,servlet,String,Class,电话)