0

実行中の非同期タスクがあり、その中で接続されたデバイスから結果を取得します。非同期タスクは、結果を受け取った後に onPostExcute を終了して実行する必要があります。このような返信があるまで待つ流れを実行する方法はありますか? ありがとう

private void getData(){
    final Context con = this.getActivity();
    String tmp;
    AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>() {
        private ProgressDialog pd;
        @Override
        protected void onPreExecute() {
            pd = new ProgressDialog(con);
            pd.setTitle("Scanning...");
            pd.setMessage("Please wait.");
            pd.setCancelable(false);
            pd.setIndeterminate(true);
            pd.show();
        }
        @Override
        protected Void doInBackground(Void... arg0) {
            try {
                tmp = Control.getReply();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return null;
        }
        @Override
        protected void onPostExecute(Void result) {
            pd.dismiss();
            startTestModeControl(tmp);
        }
    };
    task.execute((Void[])null);
}
4

1 に答える 1

0

リスナー/オブザーバーのようなものを探しています。Observerpattern を見てください。これを行うには、独自の AsyncTask または Thread でデータを処理するオブジェクトを非同期的に作成し、onPostExecute() を使用してリスナーに結果の準備ができていることを通知します。

結果をディスパッチする方法を探していて、Listener / Observer パターンが探しているものではない場合は、Android の Handler クラスを使用できます。

于 2013-07-05T08:32:38.470 に答える