Android:进度对话在活动暂停时不被解雇

时间:2011-07-12 23:36:12

标签: android progressdialog

我遇到了一个小问题,因为他正在使用ProgressDialog和suer击中主键。

我按如下方式创建了ProgressDialog:

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

在我下载完网络内容后解雇它。

progressDialog.dismiss();

问题是当用户点击主键时,有时调用dismiss的Thread是kille但是对话永远不会被解雇...因此当app重新启动时它会被卡在ProgressDialog后面。

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

我知道这个话题很老,但我认为我的答案可以帮助很多人。

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

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

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

答案 1 :(得分:1)

为什么会杀死线程?

如果Android系统认为内存不足,则只会终止整个进程而不是单个线程。你确定你总是打电话给progressDialog.dismiss(),即使线程由于未捕获的异常而停止(例如)吗?

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