【问题标题】:Android: Progress Dialog not dismissed when activity pausesAndroid:活动暂停时不会关闭进度对话框
【发布时间】:2012-10-19 05:03:00
【问题描述】:

我在处理 ProgressDialog 和用户按下 home 键时遇到了一个小问题。

我按如下方式创建我的 ProgressDialog:

runOnUiThread(new Runnable() {
            public void run() {
                progressDialog = ProgressDialog.show(this, "",this.getResources().getString( R.string.AProgressMessage), true);
            }
        });

当我下载完互联网内容后关闭它。

progressDialog.dismiss();

问题是当用户点击 home 键时,有时调用关闭的线程被杀死,但 hte 对话框永远不会被关闭...因此,当应用重新启动时,它会卡在 ProgressDialog 后面。

有什么想法吗?

【问题讨论】:

    标签: android progressdialog


    【解决方案1】:

    我知道这个帖子很老了,但我认为我的回答可以帮助很多人。

    Activity 类有一个onPause 方法。因此,如果您从正在暂停的同一活动中调用对话框,则可以使用onPause 方法关闭对话框。

    将对话框变量设为全局变量,并定义onPause方法如下:

    @Override
    public void onPause(){
        super.onPause();
        if(dialog!=null)
            dialog.dismiss();
    }
    

    【讨论】:

      【解决方案2】:

      为什么线程会被杀死?

      如果Android系统认为内存不足,它只会杀死整个进程而不是单个线程。你确定你总是调用progressDialog.dismiss(),即使线程因为未捕获的异常而停止(例如)?

      顺便说一句,您可能应该使用 AsyncTask 而不是自己进行线程管理,请参阅here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-07-05
        • 1970-01-01
        • 2013-03-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-31
        相关资源
        最近更新 更多