我有一个异步任务在运行,在其中我将从连接的设备获得结果。异步任务应在收到结果后终止并执行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);
}
答案 0 :(得分:0)
您正在寻找lika a Listener / Observer。那么看一下Observerpattern。为此,异步创建在自己的AsyncTask或Thread中处理数据的对象,并使用onPostExecute()通知Listener结果已准备就绪。
如果您正在寻找一种分配结果的方法,并且您不需要使用Listener / Observer模式,则可以使用Androids Hander类。