Android生命周期详解

来源:互联网 发布:比较有名仓储软件 编辑:程序博客网 时间:2024/05/21 20:21

首先我们先创建一个Android项目,将Activity重写以下方法:安卓生命周期的方法包括onCreate()(创建)、onStart()(开始)、onRestart()(重新开始)、onResume()(重绘)
onPause()(暂停)、onStop()(停止)和onDestroy()(销毁)。Android的生命周期其实就是Activity的生命周期,而Activity的生命周期就在于这七个方法之间的调用。

首先我们来看看重写的七个方法:

package com.jzlg.activitydome;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  Log.v("MainonCreate", "onCreate");
 }
 protected void onStart() {
  super.onStart();
  Log.v("MainonStart", "onStart");
 }
 protected void onResume() {
  super.onResume();
  Log.v("MainonResume", "onResume");
 }
 protected void onPause() {
  super.onPause();
  Log.v("MainonPause", "onPause");
 }
 protected void onStop() {
  super.onStop();
  Log.v("MainonStop", "onStop");
 }
 protected void onRestart() {
  super.onRestart();
  Log.v("MainonRestart", "onRestart");
 }
protected void onDestroy() {
  super.onDestroy();
  Log.v("MainonDestroy", "onDestroy");
 }

}
我们在每个方法中使用Log.v();用来在后台输出打印信息。以此来看看方法的调用过程,实现完七个方法后。我们来运行下项目,看看会调用哪些方法。

这时我们可以发现,当程序走完onResume()方法时。这时的界面才会输出信息。方法执行的流程为:onCreate()(创建)--->onStart()(开始)--->onResume()(重绘)

总结:只有当调用onResume()(重绘)方法时才会显示出用户交互界面。

 

假如我们在使用应用的时候一不小心把屏幕锁定了。那这时会调用哪写方法呢。

大家可以发现,当我锁定屏幕之后。首先调用的方法就是:onPause()(暂停)方法

那解锁之后又会调用那些方法呢?

可以发现,解锁之后。而当用户解锁之后则会重新调用onResume()(重绘)方法。重新显示出用户交互界面。流程:onResume()(重绘)-->onPause()(暂停)-->onResume()(重绘)

 

假如我们在使用应用的时候突然来电话了怎么办,这时又会调用哪写方法呢?

可以看出,当来电时会首先调用onPsuse()(暂停),接着调用onStop()(停止)。

那当我们挂了电话,重新回到应用界面时。又会调用那些方法呢。

可以发现,当我们挂了电话之后。会调用:onRestart()-->onStart()--onResume()

整个流程:onResume()-->onPause()-->onStop()-->onRestart()-->onStart()--onResume()

 

假如当我们使用“Home”键会调用哪些方法呢?

再次回到界面时所调用的方法:

整个流程:onResume()-->onPause()-->onStop()-->onRestart()-->onStart()--onResume()

 

当我们使用返回键,退出应用时

 

以上的几种情况就是安卓的生命周期了。在此我额外的总结了一些经验与大家分享:

销毁之前的Activity,调用startActivity()方法的时候加上一句:this.finish() .
当用户请求跳转到另外一个Activity时,前一个Activity并没有销毁。
当用户请求之后onResume()方法会调用onPause()-->onStop().
流程:onResume()-->onPause()-->onStop()

当Activity A跳转到Activity B时,这时Activity A的运行流程为:onResume()-->onPause()-->onStop()。跳转到B之后,A的状态会保持在onStop()方法,
如果B重新返回到A时,这时A的onStop()方法会去调用onRestart()方法重新开始。
A-->B-->A,Activity A中方法运行流程:onResume()-->onPause()-->onStop()-->onRestart()-->onStart()--onResume()

当Activity A跳转到Activity B时,Activity B中的运行流程:onCreate()(创建)--->onStart()(开始)--->onResume()(重绘)
如果Activity B返回到Activity A时。这时Activity B中的运行流程:onResume()-->onPause()-->onStop()-->onDestroy()

线程与生命周期:安卓生命周期主要是影响主线程,与子线的交互无关。例如当安卓生命周期onDestroy()时,子线程可以照样运行
子线程不受生命周期的约束。

当屏幕发生改变时,安卓生命周期会从新加载,从头开始onCreate()

当MainActivity处于onPause和onStop状态时,当更高优先级的apps需要内存,而此时系统内存不够了,
那么android系统就会将MainActivity所在的进程给杀了以释放资源。

 

 

 

 

 

 

 

 

 

 

 

0 0
原创粉丝点击