1、Activity有哪7+2个生命周期函数?简述各个回调函数的作用,并使用程序来解释Activity的9个生命周期函数的调用顺序。
时间: 2024-03-14 07:42:44 浏览: 189
Activity的7个生命周期函数包括:
1. onCreate():Activity被创建时调用。在这个方法中,我们可以进行UI界面的初始化、数据的加载等操作。
2. onStart():Activity可见但未在前台时调用。在这个方法中,我们可以进行一些初始化操作,比如注册广播接收器等。
3. onResume():Activity获得焦点时调用。在这个方法中,我们可以进行一些数据的刷新、动画效果的启动等操作。
4. onPause():Activity失去焦点但未被销毁时调用。在这个方法中,我们可以进行一些数据的保存、动画效果的停止等操作。
5. onStop():Activity完全不可见时调用。在这个方法中,我们可以进行一些资源的释放、服务的停止等操作。
6. onDestroy():Activity被销毁时调用。在这个方法中,我们可以进行一些资源的释放、服务的停止等操作。
7. onRestart():Activity重新启动时调用。在这个方法中,我们可以进行一些数据的刷新等操作。
另外,Android 10及以上版本还增加了两个生命周期函数:
8. onAttachContext():Activity附着到上下文时调用。
9. onAttachBaseContext():Activity附着到基础上下文时调用。
下面是Activity生命周期函数调用顺序的示例程序:
```
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(TAG, "onCreate");
}
@Override
protected void onStart() {
super.onStart();
Log.d(TAG, "onStart");
}
@Override
protected void onResume() {
super.onResume();
Log.d(TAG, "onResume");
}
@Override
protected void onPause() {
super.onPause();
Log.d(TAG, "onPause");
}
@Override
protected void onStop() {
super.onStop();
Log.d(TAG, "onStop");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d(TAG, "onDestroy");
}
@Override
protected void onRestart() {
super.onRestart();
Log.d(TAG, "onRestart");
}
}
```
在运行上述程序时,我们可以根据打印的日志信息来观察Activity生命周期函数的调用顺序。例如,当我们启动该Activity时,可以看到如下的日志输出:
```
D/MainActivity: onCreate
D/MainActivity: onStart
D/MainActivity: onResume
```
当我们按下Home键将该Activity切换到后台时,可以看到如下的日志输出:
```
D/MainActivity: onPause
D/MainActivity: onStop
```
当我们再次回到该Activity时,可以看到如下的日志输出:
```
D/MainActivity: onRestart
D/MainActivity: onStart
D/MainActivity: onResume
```
当我们按下返回键退出该Activity时,可以看到如下的日志输出:
```
D/MainActivity: onPause
D/MainActivity: onStop
D/MainActivity: onDestroy
```
由此可见,Activity的生命周期函数调用顺序是比较固定的,我们可以根据这个顺序来进行相应的操作。
阅读全文