0

非同期タスクの事前実行で進行状況ダイアログを開始していますが、ブロードキャストを取得し、ブロードキャストレシーバー内で時間のかかるアクションを実行しても、進行状況ダイアログが閉じられません。非同期タスクはブロードキャストレシーバーから独立しています。よろしくお願いします。どんな助けでも大歓迎です。

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




        }
    };

この問題はマルチタスクに関連していると思います。制御がブロードキャストレシーバーにある場合(レシーバーでより多くの時間が費やされている場合)、非同期タスクの進行状況ダイアログが閉じられません

4

2 に答える 2

1

ついに解決策が得られました。進行状況ダイアログがグローバルであると宣言したため、却下する際に問題が発生しました。非同期タスク内でダイアログを宣言しましたが、機能しました。進行状況ダイアログが却下されます。

于 2012-09-24T04:18:59.837 に答える
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...
                 }
于 2012-09-12T12:26:53.467 に答える