android - 以下情况在Activity Lifecycle中调用了哪些方法:

标签 android android-activity lifecycle

假设我有一个 Hello World 单一 Activity 应用程序。我启动了这个应用程序。

在每种情况下调用了哪些方法:

  • 按下主页按钮:?
    按下返回按钮:?
    接到电话:?

一旦用户通过应用图标再次启动应用,会调用哪些方法(假设操作系统没有“其他应用需要内存条件”):

  • 按下主页按钮:?
    按下返回按钮:?
    接到电话:?

谢谢大家。

编辑:额外积分:用户如何在不调用 onStop 的情况下调用 onPause

最佳答案

为了了解 Activity 生命周期,我创建了演示参见 HERE

我添加了不同的案例研究。

MainActivity.java

    public class MainActivity extends AppCompatActivity {

    private static final String TAG = "State changed";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Log.i(TAG, "onCreate: ");
    }

    public void OpenDialog(View view) {

        final AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create(); //Read Update
        alertDialog.setTitle("hi");
        alertDialog.setMessage("this is my app");

        alertDialog.setButton("Continue..", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                // here you can add functions
                alertDialog.dismiss();
            }
        });

        alertDialog.show();  //<-- Show dialog
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.i(TAG, "onStart: " );
    }

    @Override
    protected void onResume() {
        super.onResume();

        Log.i(TAG, "onResume: ");

    }

    @Override
    protected void onPause() {
        super.onPause();

        Log.i(TAG, "onPause: ");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.i(TAG, "onStop: ");
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Log.i(TAG, "onRestart: ");
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        Log.i(TAG, "onSaveInstanceState: ");
    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        Log.i(TAG, "onRestoreInstanceState: ");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.i(TAG, "onDestroy: ");
    }

    @Override
    public void onBackPressed() {
        super.onBackPressed();
        Log.i(TAG, "onBackPressed: ");
    }

}

案例研究

案例 1 = 首先点击应用图标

注意:这里没有显示 onRestoreInstanceState 因为它在运行时执行

我/状态改变:onCreate:

我/状态改变:onStart:

我/状态改变了:onResume:

案例 2 = 点击主页按钮(屏幕熄灭或来电时同样发生)

我/状态改变:onPause:

我/状态改变了:onSaveInstanceState:

I/状态改变:onStop:

案例 3 =(案例 2 继续)通过最近打开应用程序

I/状态改变:onRestart:

我/状态改变:onStart:

我/状态改变了:onResume:

案例 4 = 单击返回按钮(onBackPressed 方法调用)

我/状态改变:onPause:

I/状态改变:onStop:

我/状态改变:onDestroy:

案例 5 = 配置更改(旋转屏幕)

我/状态改变:onPause:

我/状态改变了:onSaveInstanceState:

I/状态改变:onStop:

我/状态改变:onDestroy:

我/状态改变:onCreate:

我/状态改变:onStart:

我/状态改变了:onRestoreInstanceState:

我/状态改变了:onResume:

关于android - 以下情况在Activity Lifecycle中调用了哪些方法:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5019686/

相关文章:

android - 无法解析符号(上下文)

java - 调用 Intent.ACTION_CALL 时出现 ActivityNotFoundException

android - 是否可以在 ListView 中显示的图像上显示徽章

android - cordova 应用程序上的服务人员

android - 将数据发送到在后台运行的 Activity

database - 在数据库中存储用户历史记录的最佳实践

ios - iPhone 应用程序的生命周期是什么?

javascript - Reactjs,删除 componentWillUnmount 上的事件监听器,

android - 没有 FragmentActivity 的 DialogFragment

asp.net-mvc - MVC 请求生命周期 - 何时/如果发生对象处置?