我有一個異步任務正在運行,並且其中我將從連接的設備獲取結果。異步任務應該在收到結果後終止並執行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);
}
這是默認行爲。它將掛起,直到完成Control.getReply(),除非這也是一種與偵聽器一起工作的異步方法。 –
我不知道你連接了哪個設備,如果你有一個可以修改的程序,反正我會用流來完成。您只需發送一些內容並等待回覆,這是一個阻止調用,AsyncTask無法繼續前進,直到獲得回覆。 –