当前位置: 首页 > 编程笔记 >

Android Activity生命周期详解

潘宪
2023-03-14
本文向大家介绍Android Activity生命周期详解,包括了Android Activity生命周期详解的使用技巧和注意事项,需要的朋友参考一下

Activity 的生命周期。

一、理解Activity

Activity是Android程序的4大组件之一。

Activity是Android程序的表示层。程序的每一个显示屏幕就是一个Activity。

学过WEB开发的同学,可以把Activity理解成网页中的一个JSP文件;或者你可以把它理解成一个Windows的窗口。

下面看一下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的生命周期:

 

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

 

Activity栈:

Android通过Activity栈的方式来管理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系统把ActivityLife这个Activity先杀死(具体顺序是先暂停、后关闭再销毁),然后再启动(具体顺序是先创建,后启动再恢复)。通过这个例子我们也清楚的看到了,是Android系统而不是程序员在控制Activity的生命周期。

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

 类似资料:
  • 本文向大家介绍springMVC的生命周期详解,包括了springMVC的生命周期详解的使用技巧和注意事项,需要的朋友参考一下 springMVC的生命周期,听到的时候都没有反应过来,springMVC还有生命周期?现在看来生命周期就是springMVC的流程,SpringMVC是MVC思想的一种实现,下面看一下MVC思想的流程图: MVC的核心思想如上图,那么springMVC是如何实现MVC的

  • 本文向大家介绍详解ASP.NET页面生命周期,包括了详解ASP.NET页面生命周期的使用技巧和注意事项,需要的朋友参考一下 ASP.NET页面运行时候,页面将经历一个生命周期,在生命周期中将执行一系列的处理步骤。包括初始化、实例化控件、还原和维护状态、运行时间处理程序代码以及进行呈现。熟悉页面生命周期非常重要,这样我们才能在生命周期的合适阶段编写代码。如果我们能在写代码的时候想着我们现在是在做生命

  • 注:本文档提供的生命周期指的是 Universal App 的生命周期,它依赖 rax-app 提供的 runApp方法。 App 级生命周期 launch  在 App 启动时触发 使用生命周期 你可以使用 rax-app 提供的 useAppLaunch 来注册 App 级别的生命周期。 示例: import { useAppLaunch } from 'rax-app'; useAppLa

  • 我们大致为WebAPplication设计了4个生命周期: 请求初始化其实就是从URL中解析提取出{module}, {action}, {method}; 然后再根据{module}, {action}, {method}找到对应的Controller文件; 然后再调用对应的{method},完了之后再发送响应。当然响应的过程中肯定是要顺带着解析下模板标签啦。 恩,这就完了,貌似感觉很简单啊。

  • 如下图. 可以看出,基本周期是: created mounted updated (update 可以理解成人肉手动操作触发) destroyed 上面步骤中的 1,3,4都是自动触发。 每个步骤都有对应的 beforeXyz方法 所以, 我们一般使用mounted 作为页面初始化时执行的方法

  • 概览 组件的生命周期分为三个阶段:挂载、渲染、卸载,下图展示了解组件在整个生命周期中所涉及到的方法调用、原型方法调用和状态变化。 挂载阶段 从组件实例被创建再到被插入根组件树中,所经历的操作如下: 初始化组件实例。 根据组件类型绑定对应的原型。 调用 proto->init() 原型方法。 标记组件需要刷新全部样式。 因父组件变为另外一个组件,触发 link 事件。 更新阶段 当组件被插入到根组件