欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android Activity生命周期详解

程序员文章站 2024-03-05 19:14:55
activity 的生命周期。 一、理解activity activity是android程序的4大组件之一。 activity是android程序的表示层。...

activity 的生命周期。

一、理解activity

activity是android程序的4大组件之一。

activity是android程序的表示层。程序的每一个显示屏幕就是一个activity。

学过web开发的同学,可以把activity理解成网页中的一个jsp文件;或者你可以把它理解成一个windows的窗口。

下面看一下activity类的继承关系:

 Android Activity生命周期详解

 从这里可以看到activity是context类的子类,大家对此先有个印象。

 二、理解activity的生命周期

手机最重要也是最基础的功能是打电话,也就意味着电话来的时候可能随时要把现在的程序暂停,如果电量不足的时候也可能随时要把现有程序关闭;因此android程序和电脑上的程序有所不同,具体到activity,activity的生命周期不是自身控制的,而是由android系统控制的。

在android中activity有四种基本状态:

1、running

位于屏幕最前端时,此时处于可见状态,和用户可交互的状态。

2、paused

当acitivy被另一个透明的或者非全屏的activity覆盖时的状态叫paused状态,虽然可见但不可交互。
3、stop

当activity被另外一个activity覆盖、界面不可见时处于stop状态。

4、killed

activity被系统杀死或者跟本没启动时就是killed状态。

我们下面看一下activity的生命周期:

 Android Activity生命周期详解

  下面是上图的简单翻译版本:

 Android Activity生命周期详解

activity栈:

android通过activity栈的方式来管理activity。

Android Activity生命周期详解

 正在运行的activity 处在在栈的最顶端,它是运行状态的;

当有新activity进入屏幕最上端时,原来的activity就会被压入第二层,如果他的屏幕没有被完全遮盖,那么他处于pause状态,如果他被遮盖那么他处于stop状态。

当然不管你出于任何一层,都可能在系统觉得资源不足时被强行关闭,当然关闭时在栈底的程序最先被关闭。

譬如:当你在程序中调用 activity.finish()方法时,结果和用户按下 back 键一样:他告诉 activity manager该activity实例可以被“回收”。随后 activity manager 激活处于栈第二层的 activity 并重新入栈,把原 activity 压入到栈的第二层,从 running 状态转到 paused 状态。

三.实例:观察翻转屏幕导致的activity状态变化

activity类中定义了和生命周期相关的一些方法,这些方法会在状态改变时被调用,譬如创建时调用的方法oncreate()。因此我们可以写一个程序,在程序的每个一个方法中写注释,然后看看运行时注释的打印顺序来跟踪activity的状态变化。

下面是程序代码:

package android.basic.lesson4;import android.app.activity;
import android.os.bundle;
import android.util.log;public class mainactivitylife extends activity {
string tag =”[mainactivitylife]“;
/** called when the activity is first created. */
@override
public void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.main);
log.i(tag, “oncreate”);
}@override
public void onstart(){
super.onstart();
log.i(tag, “onstart”);
}@override
public void onpause(){
super.onpause();
log.i(tag, “onpause”);
}@override
public void onresume(){
super.onresume();
log.i(tag, “onresume”);
}@override
public void onstop(){
super.onstop();
log.i(tag, “onstop”);
}@override
public void ondestroy(){
super.ondestroy();
log.i(tag, “ondestroy”);
}
}

然后调出logcat工具,来观察程序的运行细节。通过logcat的过滤器我们可以看到程序启动、屏幕翻转、按后退键程序退出的过程,这有助于我们验证刚才所学的知识。

Android Activity生命周期详解

我们可以看到屏幕翻转时,android系统把activitylife这个activity先杀死(具体顺序是先暂停、后关闭再销毁),然后再启动(具体顺序是先创建,后启动再恢复)。通过这个例子我们也清楚的看到了,是android系统而不是程序员在控制activity的生命周期。

以上就是对android activity 生命周期的介绍,有需要的朋友可以参考下。