Android四大组件之——Activity的生命周期(图文详解)

Activity的生命周期:

一共有三种状态分别为运行状态、暂停状态、以及停止状态。

运行状态:当Activity在屏幕最前端(位于当前堆栈的顶部),他是可见的由焦点的,可以用来处理用户操作(点击,双击,长按等),那摩就叫做激活或运行状态。值得注意的是Activity处于运行状态的时候,Android会尽可能地保持它的运行,即使出现内存不足等情况下,Android也会先杀死堆栈底部的Activity,来确保运行状态的Activity正常运行。


暂停状态:在某种情况下。Activity对用户来说,仍是可见的,但不用有焦点,

即用户对他的操作时没有实际意义的。在这个时候,他是处于暂停状态,例如:

当最前端的Activity是个透明或者没有全屏,那摩下层仍然可见的 Activity就是暂停状态,暂停状的Activity态仍然是可激活的(他保留着所有的状态和成员信息并保持与aCtivity管理器的连接),担当内存不足时可能会被杀死。(注意:不是所有的Activity失去焦点就会进入暂停状态)


停止状态:当Activity完全不可见时,他就处于停止状态他仍然保持者当前状态和成员信息,然而这些对用户来说,都是不可见的;同暂停状态一样,当系统气态地方需要内存时,台也有被杀死的可能。

生命周期事件:

Activity状态的变化是人为操作的,而这一状态的改变,也会触发一些状态。我们叫他生命周期状态事件。一共有七个。

Viid onCreate(Bundle saveInstanceState)

void onStart()

void onRestart()

void onResume()

void onPause()

void onStop()

void onDestroy()

生命周期图:



当打开一个Activity,如果该Activity实例不存在与Activity管理器中,就会触发onCreate事件。注意:Activity的实例不是我们自己创建的,是Android系统自己创建的。

接下来是onStart事件,然后是onResume事件,此时Activity就处于运行状态了。

编写Activity.java

首先重写7个相应被触发的方法,以日志的形式输出相应的事件信息。

package cn.class3g.activity;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class ActivityLifeCycleActivity extends Activity {
private static final String TAG="lifeCycle";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.i(TAG, "onCreate");
}

@Override
protected void onStart() {

super.onStart();
Log.i(TAG, "onStart");
}

@Override
protected void onResume() {

super.onResume();
Log.i(TAG, "onResume");
}

@Override
protected void onPause() {

super.onPause();
Log.i(TAG, "onPause");
}

@Override
protected void onStop() {

super.onStop();
Log.i(TAG, "onStop");
}

@Override
protected void onDestroy() {

super.onDestroy();
Log.i(TAG, "onDestroy");
}
@Override
protected void onRestart() {

super.onRestart();
Log.i(TAG, "onRestart");
}
}

1:运行Activity从创建到进入运行状态所触发的事件;

onCreate()--->onStart()--->onResume()

2:点击返回键

onPause()-->onStop()-->onDestroy()

-----------------------------------------------------------

1运行

2:点击Home(小房子;压栈)

onPasuse-->onStop()

3长按Home键重新回到ActivityLifeCycleActivity

onRestart()-->onStart()-->onResume()

-------------------------------------------------------------------

1运行

2切换值SecondActivity之上

onPasuse-->onStop()

3切换回ActivityLifeCyle

onRestart()-->onStart()-->onResume()

创建一个对话框样式的activity:DialogActivity

1运行

2切换至DialogActivity

onPause()

3按返回键返回至ActivityLifeCyle

onResume()

创建AlertDialog对话框

显示对话框并返回,发现此事并不能触发ActivityLifeCycleActivity实例的状态变化

也就不会调用其生命周期中的任何的函数。

--------------------------------------------------

添加

protected void onRestoreInstanceState(Bundle savedInstanceState) {

super.onRestoreInstanceState(savedInstanceState);

Log.i(TAG, "onRestoreInstanceState()");

}


protected void onSaveInstanceState(Bundle outState) {

super.onSaveInstanceState(outState);

Log.i(TAG, "onSaveInstanceState()");


}

1运行程序

2Home

onSaveInstanceState--->onPause()-->onStop()

3在桌面,长按Home重新回到ActivityLifeCycleActivity

onRestsrt-->onstart-->onResume

注意:此时并没有触发onRestoreInstanceState()(因为它并没有真正销毁)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值