Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android-进度条未正确关闭_Android_Thread Safety - Fatal编程技术网

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更好,对吗?