Android应用程序是由Android系统活动(Activity)的堆栈所管理的。生命周期方法是在不同的时间点被调用的一些方法。当Android系统启动一个应用程序或者用户操作一个应用程序时,都会在Activity执行一些操作来响应这个事件。
一、生命周期方法有哪些
生命周期方法在开发中非常重要,了解其调用顺序可以更好地管理Activity,在此先介绍几个基本的生命周期方法
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onStart() {
super.onStart();
}
@Override
protected void onResume() {
super.onResume();
}
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onStop() {
super.onStop();
}
@Override
protected void onDestroy() {
super.onDestroy();
}
}
二、生命周期方法的详解
1. onCreate()
创建Activity时首先被调用这个方法,一般用于初始化操作,加载布局等。必须在Activity的整个生命周期中只调用一次。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化
initView();
initData();
initListener();
}
2. onStart()
当Activity在屏幕上可见时,此方法将被调用。这个方法被调用后,Activity变成VISIBLE状态,并处于前台,但此时并不是用户和Activity进行交互的时间点。
@Override
protected void onStart() {
super.onStart();
//逻辑操作
startPlay();
}
3. onResume()
Activity处于resumed状态时,此方法将被调用。这意味着Activity在前台,并与用户进行交互。如果Activity暂停(如来电或横幅通知等情况),则此方法不会被调用。
@Override
protected void onResume() {
super.onResume();
//逻辑操作
resumePlay();
}
4. onPause()
在Activity失去焦点进入Pause状态时,此方法将被调用。此时,Activity不可见,但依然部分活跃状态,因为用户有可能返回当前Activity。例如,当用户进入另一个Activity或设备进入保持活跃状态的模式(如用户按下电源键)时,将调用此方法。
@Override
protected void onPause() {
super.onPause();
//逻辑操作
pausePlay();
}
5. onStop()
当Activity被完全遮盖或另一个Activity打开(并完全遮盖)当前Activity时,此方法将被调用。需要注意的一点是,当系统自动销毁Activity时不会调用此方法。
@Override
protected void onStop() {
super.onStop();
//逻辑操作
stopPlay();
}
6. onDestroy()
当Activity结束并即将销毁时,此方法将被调用,并在当前Activity结束之前执行一些需要完成的资源释放操作,如保存某些数据,释放一些资源等等。
@Override
protected void onDestroy() {
super.onDestroy();
//逻辑操作
releasePlay();
}
三、生命周期实例
以一个简单的计数器应用程序为例,演示Activity在不同生命周期方法中的行为
1. MainActivity.java
public class MainActivity extends AppCompatActivity {
private int count = 0;
private TextView mCountTv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取TextView组件
mCountTv = findViewById(R.id.count_tv);
mCountTv.setText(String.valueOf(count));
Toast.makeText(this, "onCreate", Toast.LENGTH_SHORT).show();
}
@Override
protected void onStart() {
super.onStart();
Toast.makeText(this, "onStart", Toast.LENGTH_SHORT).show();
}
@Override
protected void onResume() {
super.onResume();
Toast.makeText(this, "onResume", Toast.LENGTH_SHORT).show();
}
@Override
protected void onPause() {
super.onPause();
Toast.makeText(this, "onPause", Toast.LENGTH_SHORT).show();
}
@Override
protected void onStop() {
super.onStop();
Toast.makeText(this, "onStop", Toast.LENGTH_SHORT).show();
}
@Override
protected void onDestroy() {
super.onDestroy();
Toast.makeText(this, "onDestroy", Toast.LENGTH_SHORT).show();
}
//增加计数
public void onCountBtnClick(View view) {
count++;
mCountTv.setText(String.valueOf(count));
}
//重置计数
public void onResetBtnClick(View view) {
count = 0;
mCountTv.setText(String.valueOf(count));
}
}
2. activity_main.xml
四、总结
通过本文的介绍和实例,我们掌握了生命周期的基本概念、生命周期方法的调用时机及生命周期的实现等相关知识。合理地管理Activity的生命周期可以让我们的应用程序更加高效、稳定,更好地满足用户的需求。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/204261.html
微信扫一扫
支付宝扫一扫