当控制进入广播接收器时,异步任务中的进度对话框不会被解除

时间:2012-09-12 11:46:09

标签: android multithreading android-asynctask broadcastreceiver

我在异步任务预执行中启动进度对话框,同时如果我收到广播并且如果我在广播接收器中执行一些耗时的操作,则进度对话框不会被解除。异步任务独立于广播接收器。谢谢提前。感谢任何帮助。

class disconnecting extends AsyncTask<String, Void, Void> {

        @Override
        protected void onPreExecute() {

            super.onPreExecute();

            progressDialog.setMessage(context.getResources().getText(
                    R.string.disconnecting));
            progressDialog.show();


        }

        @Override
        protected Void doInBackground(String... params) {

             CommunicationManager.getInstance().Disconnecting(
                    params[0]);

            return null;

        }

        @Override
        protected void onPostExecute(Void result) {

            super.onPostExecute(result);




                progressDialog.dismiss();

        }

    }


 private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {

            String lostId = intent.getStringExtra("ID");

            System.out.println("LOST ID" + lostId);




        }
    };

我认为这个问题与多任务处理有关。当控制在广播接收器中时(在接收器上花费的时间更多),异步任务进度对话框不会被解除

2 个答案:

答案 0 :(得分:1)

最后我得到了解决方案。我已经声明进度对话框已全局,因此解除了一个问题。现在我在异步任务中声明了对话框,它工作了......进度对话框正在被解雇。

答案 1 :(得分:0)

使用这样来解除进度条:

protected void onPostExecute(Void result) {
    // TODO Auto-generated method stub

    super.onPostExecute(result);
    if (p_dialog != null && p_dialog.isShowing())
        p_dialog.dismiss();
                {//To do task...
                 }