我遇到了一个小问题,因为他正在使用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后面。
有什么想法吗?
答案 0 :(得分:5)
我知道这个话题很老,但我认为我的答案可以帮助很多人。
Activity类有onPause
方法。因此,如果从正在暂停的同一活动中调用对话框,则可以使用onPause
方法来淡化对话框。
将对话框变量设为全局,并按如下方式定义onPause
方法:
@Override
public void onPause(){
super.onPause();
if(dialog!=null)
dialog.dismiss();
}
答案 1 :(得分:1)
为什么会杀死线程?
如果Android系统认为内存不足,则只会终止整个进程而不是单个线程。你确定你总是打电话给progressDialog.dismiss()
,即使线程由于未捕获的异常而停止(例如)吗?
顺便说一句,您应该使用AsyncTask而不是自己进行线程管理,请参阅here。