1. 简述
安卓的生命周期有六个,分别为:onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy(),每一个Activity都有这些生命周期,通过这些生命周期,Activity在不存在,停止,暂停和运行之间转换,如下图:
2. 通过打印日志信息更深了解生命周期
如果对安卓Logcat工具或是日志打印不了解,请戳此链接
用到的代码
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivityLog";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG,"onCreate()方法被调用");
setContentView(R.layout.activity_main);
}
@Override
public void onStart(){
super.onStart();
Log.d(TAG,"onStart()方法被调用");
}
@Override
public void onResume(){
super.onResume();
Log.d(TAG,"onResume()方法被调用");
}
@Override
public void onPause(){
super.onPause();
Log.d(TAG,"onPause()方法被调用");
}
@Override
public void onStop(){
super.onStop();
Log.d(TAG,"onStop()方法被调用");
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG, "onDestroy()方法被调用");
}
}
第一步:第一次打开应用
运行程序,第一次打开应用日志显示如下图,可见三个生命周期方法被调用,分别为:onCreate(), onStart(), onResume(),通过上图我们得知,一个Activity第一次打开经过了:不存在->停止->暂停->运行阶段
第二步:按下home键
日志打印如下,可见两个生命周期方法被调用,分别为 onPause(), onStop(),此时,Activity实例并没有被消灭,而是存在内存之中,Activity的状态也来到了停止
第三步:再次打开应用
日志打印如图,可见 onStart(), **onResume()**方法再次被调用,Activity处于运行状态
第四步:按下返回键
日志打印如下,可见调用了onPause(), onStop(), **onDestroy()**三个生命周期方法,此时应用退出,Activity又回到了不存在的状态,内存中已经没有了activity实例
3. 注意
当安卓应用处于运行状态屏幕翻转之后,依此进行的操作是onPause(), onStop(), onDestroy(),onCreate(), onStart(), onResume(),即,屏幕翻转之后的Activity实例要先被安卓系统消灭,然后再重新创建,所以,像我一样的安卓小萌新开发的时候注意屏幕翻转的信息保存。