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

您正在寻找类似于 Listener / Observer 的东西。所以看看观察者模式。为此,请异步创建在自己的 AsyncTask 或 Thread 中处理数据的对象,并使用 onPostExecute() 通知侦听器结果已准备好。

如果您正在寻找一种发送结果的方法,而 Listener/Observer 模式不是您想要的,您可以使用 Androids Hander 类。

于 2013-07-05T08:32:38.470 回答