异步任务问题(等待结果)

时间:2013-07-05 08:26:43

标签: android android-asynctask

我有一个异步任务在运行,在其中我将从连接的设备获得结果。异步任务应在收到结果后终止并执行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);
}

1 个答案:

答案 0 :(得分:0)

您正在寻找lika a Listener / Observer。那么看一下Observerpattern。为此,异步创建在自己的AsyncTask或Thread中处理数据的对象,并使用onPostExecute()通知Listener结果已准备就绪。

如果您正在寻找一种分配结果的方法,并且您不需要使用Listener / Observer模式,则可以使用Androids Hander类。