您的位置:

Android应用生命周期详解

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的生命周期可以让我们的应用程序更加高效、稳定,更好地满足用户的需求。

Android应用生命周期详解

2023-05-14
Android Activity生命周期及应用场景

2023-05-20
Android Activity 生命周期:理解Androi

Android应用的核心是Activity,它是用户与应用程序交互的窗口。一个Activity可以简单地理解为用户与应用的一个窗口,因此,Android中的Activity生命周期管理也非常重要,它可

2023-12-08
Android Application生命周期详解

2023-05-21
Android Application生命周期

2023-05-16
Android横竖屏切换生命周期详解

2023-05-20
掌握Android Fragment的生命周期

2023-05-14
Android横竖屏切换的生命周期管理

Android设备支持横向和纵向两种屏幕方向,应用程序在不同的方向下可能会有不同的布局和展示效果。然而,当用户旋转设备屏幕时,应用程序并不一定会正确地重新加载并展示内容,这可能会导致崩溃或不完整的界面

2023-12-08
Android开发中必备的生命周期理解

2023-05-14
Android 如何使用 configChanges 优化

2023-05-14
Flutter生命周期

2023-05-18
Fragment生命周期详解

2023-05-18
安卓Activity生命周期详解

2023-05-19
Android日历开发全方位详解

2023-05-19
Android Activity框架详解

2023-05-22
详解Android Application

2023-05-18
Android Activity启动流程解析

在Android应用开发过程中,Activity是重要的组件之一。本文将为大家详细解析Android Activity启动流程,帮助读者深入理解Activity的启动过程。 一、Activity启动方

2023-12-08
Android旋转详解

2023-05-22
Android应用打包详解

2023-05-17
Android单例模式详解

2023-05-21