android-进度条未正确关闭
在android-进度条未正确关闭,android,thread-safety,Android,Thread Safety,在OnResume()中,我在线程中调用web服务这里我使用进度条来指示进程它工作正常,但假设我在某个时间后使用应用程序,我将设备置于空闲状态,然后再次打开应用程序。这一次进度条不会被取消。这不是经常发生的,有时会发生。为什么? 我怎样才能摆脱这个?如果你需要更多的信息请告诉我 代码: public void onResume() { super.onResume(); pdMessages = ProgressDialog.show(getParent(), "", "Ple
OnResume()
中,我在线程中调用web服务这里我使用进度条来指示进程它工作正常,但假设我在某个时间后使用应用程序,我将设备置于空闲状态,然后再次打开应用程序。这一次进度条不会被取消。这不是经常发生的,有时会发生。为什么?我怎样才能摆脱这个?如果你需要更多的信息请告诉我 代码:
public void onResume()
{
super.onResume();
pdMessages = ProgressDialog.show(getParent(), "", "Please wait...", true);
Thread thImportbtn = new Thread()
{
public void run()
{
try
{
//Get internal messages
strInternalInboxWSR = GetInternalInboxMessages();
} catch (SoapFault e) {
e.printStackTrace();
}
dh_Messages_Handler.post(checked_internalinbox_response);
handler.sendMessage(handler.obtainMessage());
}
};
thImportbtn.start();
}
编辑:
public void onResume()
{
super.onResume();
pdMessages = ProgressDialog.show(getParent(), "", "Please wait...", true);
Thread thImportbtn = new Thread()
{
public void run()
{
try
{
//Get internal messages
strInternalInboxWSR = GetInternalInboxMessages();
} catch (SoapFault e) {
e.printStackTrace();
}
dh_Messages_Handler.post(checked_internalinbox_response);
handler.sendMessage(handler.obtainMessage());
}
};
thImportbtn.start();
}
私有处理程序=新处理程序()
{
}) 您可以使用Handler类关闭ProgressDialog,如下所示
private Handler handler = new Handler()
{
@Override
public void handleMessage ( Message message )
{
progressDialog.dismiss();
}
};
您可以使用以下语句调用处理程序类
handler.sendMessage(handler.obtainMessage());
您正试图在非UI线程中关闭ProgressDialog,,因此无法正确关闭ProgressDialog 您应该使用覆盖的
handleMessage方法将您的dismise代码(pdMessages.dismise();
)放入处理程序中
使用更好。@naresh,谢谢你提到它,我已经更新了我的答案,请检查。这意味着如果你根据这种场景的后台进程的数据更新UI部分,那么使用AsyncTask更好,对吗?