Android:什么情况下出现Dialog会导致onPause()被调用?

2023-11-25

Android 的一个片段活动文档(向下滚动到“前台生命周期”行)说:

一个 Activity 可以频繁地进出前台——例如 例子,onPause()当设备进入睡眠状态时调用或者当一个 出现对话框.

我不太明白这一点。什么情况下会发生这种情况?是onPause()仅当相关对话框的上下文与要在其上显示对话框的活动不同时才调用?

编辑:添加代码示例来详细说明我的疑问

根据上述文档中的引用,我的活动应该onPause()方法被调用时AlertDialog(或者只是Dialog)在下面的代码中显示?显示对话框时我应该看到“onPause Called”日志条目吗?

但我不认为这种情况会发生。如果我正确理解 Android 生命周期的话,也不应该!那么,该文件指向什么?

public class LifeCycleTestActivity extends Activity {

    private static final String TAG = "LifeCycleTest";

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button btn = (Button) findViewById(R.id.button1);

        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Log.d(TAG, "onClick");

                AlertDialog dialog = new AlertDialog.Builder(LifeCycleTestActivity.this).create();
                 dialog.setMessage("You Clicked on the button");
                 dialog.setTitle("Dialog!");
                 dialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                });
                 dialog.setCancelable(true);
                 dialog.show();


                /*
                Dialog dialog = new Dialog(LifeCycleTestActivity.this);
                 dialog.setTitle("Dialog!");
                 dialog.setCancelable(true);
                 dialog.show();
                */
            }
        });        
    }

    @Override
    protected void onPause() {
        Log.d(TAG, "onPause() called");
        super.onPause();

    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.d(TAG, "onResume() called");
    }
}

onPause()当您的活动不再位于活动堆栈的顶部时调用。对话框本身不是活动,因此不会替换堆栈顶部的当前活动,因此不会导致任何暂停。

然而,对话框(小写)不需要由 Dialog 类实现。例如,使用主题设置为对话框主题的活动来实现这一情况并不少见。在这种情况下,显示对话即活动将导致新的 Activity 位于堆栈顶部,暂停之前的活动。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android:什么情况下出现Dialog会导致onPause()被调用? 的相关文章

随机推荐