一、Acivity的生命周期
1、启动状态
2、运行状态
3、暂停状态
4、停止状态
5、销毁状态
二、生命周期方法
1、onCreate()方法
onCreate()方法是Activity创建时调用,通常做一些初始化设置。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
2、onStart()方法
onStart()方法在Activity即将可见时调用。
@Override
protected void onStart() {
super.onStart();
}
3、onResume()方法
onResume()方法在Activity获取焦点开始与用户交互时调用。
@Override
protected void onResume() {
super.onResume();
}
4、onPause()方法
当前Activity被其他Activity覆盖或锁屏时调用。
@Override
protected void onPause() {
super.onPause();
}
5、onStop()方法
在Activity对用户不可见时调用。
@Override
protected void onStop() {
super.onStop();
}
6、onDestroy()方法
在Activity销毁时调用。
@Override
protected void onDestroy() {
super.onDestroy();
}
7、onRestart()方法
在Activity从停止状态到再次启动时调用。
@Override
protected void onRestart() {
super.onRestart();
}
三、通过Logcat观察生命周期
新建工程文件,添加两个Activity,对分别设置两个按键进行页面跳转。在每个方法中打印log以观察Activity生命周期。
Mainactivity.java
package com.example.activity_3_2;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i("MainActivitylife","========= act1 调用onCreate() =========");
}
@Override
protected void onStart() {
super.onStart();
Log.i("MainActivitylife","========= act1 调用onStart() =========");
}
@Override
protected void onResume() {
super.onResume();
Log.i("MainActivitylife","========= act1 调用onResume() =========");
}
@Override
protected void onPause() {
super.onPause();
Log.i("MainActivitylife","========= act1 调用onPause() =========");
}
@Override
protected void onStop() {
super.onStop();
Log.i("MainActivitylife","========= act1 调用onStop() =========");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.i("MainActivitylife","========= act1 调用onDestroy() =========");
}
@Override
protected void onRestart() {
super.onRestart();
Log.i("MainActivitylife","========= act1 调用onRestart() =========");
}
public void act01_btn1_jump(View view){
Intent intent = new Intent(this,SecondActivity.class);
startActivity(intent);
}
}
SecondActivity.java 设置上文类似。
在Logcat中观察输出日志,可以发现程序启动后依次调用了onCreate()、onStart()、onResume()。当调用了onResume()方法之后程序不在往下进行,这是程序处于运行状态,等待用户进行交互,运行结果如下图:
点击“跳转到Secondactivity”,虚拟机跳转到第二个Activity,同时在Logcat中可以看到新的日志输出。
点击左下方返回键,返回第一个Activity,观察日志输出: