2

我创建了一个对话框,但根据活动工作流程它应该触发 onpause 但它没有。出了什么问题?Android 活动流程:http: //developer.android.com/training/basics/activity-lifecycle/pausing.html

    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        //stopAutoCall = true;
        // Handle item selection
        // if (item.getTitle().toString().toLowerCase() == "settings")
        // {
        AlertDialog.Builder alert = new AlertDialog.Builder(this);

        alert.setTitle("Number");
        alert.setMessage("Put here the number in to call");

        alert.show();
    }

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

        stopAutoCall = true;
    }
4

3 回答 3

4

Adialog实际上不应该暂停活动。你可能被这句话弄糊涂了-

在正常的应用程序使用过程中,前台 Activity 有时会受到其他可视组件的阻碍,从而导致 Activity 暂停。例如,当一个半透明的活动打开时(例如对话框样式的活动),前一个活动暂停

它以对话的形式谈论了一个新的activity开场白,而不是对话。

但是,如果您想在对话框打开时触发一些代码,您可以使用onShowListener .-

alert.setOnShowListener(new DialogInterface.OnShowListener() {      
    @Override
    public void onShow(DialogInterface dialog) {
        stopAutoCall = true;
    }
});
于 2013-11-02T23:36:56.820 回答
0

此代码只会显示警报,但不会导致onPause.

onPause当活动被另一个活动隐藏时将被调用,而不是警报。警报仍然属于同一活动。

于 2013-11-02T23:33:57.370 回答
0

Activity的API有更好的定义:

暂停

当活动进入后台但尚未(尚未)被杀死时,作为活动生命周期的一部分调用。onResume() 的对应项。

您对部分可见的疑问不是由于对话框引起的,查看您的链接可以找到:

当系统为您的 Activity 调用 onPause() 时,从技术上讲,这意味着您的 Activity 仍然部分可见,但通常表明用户正在离开该 Activity,并且它很快就会进入“已停止”状态。

于 2013-11-02T23:36:20.003 回答