android - 进度条没有被正确解雇

时间:2012-09-19 10:04:52

标签: android thread-safety

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();       
}

private Handler handler = new Handler() {

@Override
public void handleMessage ( Message message )
{
    pdMessages.dismiss();
}

};

2 个答案:

答案 0 :(得分:2)

您可以使用处理程序类来关闭ProgressDialog,如下所示

private Handler handler = new Handler()
{
    @Override
    public void handleMessage ( Message message )
    {
        progressDialog.dismiss();
    }
};

您可以使用以下语句来调用Handler类,

handler.sendMessage(handler.obtainMessage());

答案 1 :(得分:0)

你是Trying To Dismiss ProgressDialog in Non-UI Thread,所以不能解雇。

您应该将您的解雇代码(pdMessages.dismiss();)放入处理程序中使用覆盖handleMessage method

使用AsyncTask会更好。