Android窗口泄漏-活动泄漏了最初添加到此处的窗口
我试图在线程的一侧显示ProgressDialog。但是当应用程序运行时,ProgressDialog将崩溃,并出现此异常 android.view.Window泄漏: Activity com.testApp.CaptureSignature已泄漏窗口 com.android.internal.policy.impl.PhoneWindow$DecorView{528dd504 最初添加到此处的V.E…..R…..I.0,0-949480} 执行行时获取错误Android窗口泄漏-活动泄漏了最初添加到此处的窗口,android,multithreading,Android,Multithreading,我试图在线程的一侧显示ProgressDialog。但是当应用程序运行时,ProgressDialog将崩溃,并出现此异常 android.view.Window泄漏: Activity com.testApp.CaptureSignature已泄漏窗口 com.android.internal.policy.impl.PhoneWindow$DecorView{528dd504 最初添加到此处的V.E…..R…..I.0,0-949480} 执行行时获取错误 pDialog.show();
pDialog.show();
public void syncing(final int sel){
if(sel==1){
ProgressDialo pDialog = new ProgressDialog(CaptureSignature.this);
pDialog.setMax(100);
pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pDialog.setCancelable(false);
pDialog.setProgress(0);
pDialog.setOnDismissListener(new MyCustomDialog.OnDismissListener() {
@Override
public void onDismiss(final DialogInterface dialog) {
doaftersync(pDialog.getProgress(),sel);
}
});
pDialog.setMessage("Syncing Deliveries.Please wait..");
pDialog.show();
Thread background = new Thread (new Runnable() {
public void run() {
progressHandler.sendMessage(progressHandler.obtainMessage());
int stat = deliveryup();
if(stat==1){
try {
locationManager.removeUpdates(locationListner);
} catch (Exception e2) {
}
}else{
pDialog.dismiss();
return;
}
progressHandler.sendMessage(progressHandler.obtainMessage());
int isustat=issueup();
if(isustat==0){
pDialog.dismiss();
return;
}
progressHandler.sendMessage(progressHandler.obtainMessage());
int locstat=locationup();
if(locstat==0){
pDialog.dismiss();
return;
}
cleanup();
progressHandler.sendMessage(progressHandler.obtainMessage());
pDialog.dismiss();
return;
}
});
background.start();
}
}
// handler for the background updating
Handler progressHandler = new Handler() {
public void handleMessage(Message msg) {
pDialog.incrementProgressBy(25);
}
};
有什么帮助吗 在UI线程中执行所有UI操作
runOnUiThread(new Runnable() {
@Override
public void run() {
pDialog.dismiss();
}
});
使用
Handler
或使用runOnUiThread()
方法关闭主线程中的ProgressDialog
您可能会遇到异常,因为当您的活动
被销毁时,进度对话框正在运行。当活动
被破坏时,您应该关闭对话框我认为安全的方法是:
if(dialog.isShowing()){
dialog.dismiss();
}
谢谢..我的活动是在进程对话框运行之前销毁这就是问题所在。