3 回答

TA貢獻1785條經驗 獲得超8個贊
AsyncTask在異步執行的后臺線程中執行任務。任務執行后獲取結果的兩種方式:
blahblah.execute(""); 在 onPostExecute 中使用并獲取結果
@Override
protected void onPostExecute(MapInfo mapInfo) {
super.onPostExecute(mapInfo);
String polyline = mapInfo.polyline;
}
或者
使用喜歡
MapInfo mapInfo = blahblah.execute("").get();
String polyline = mapInfo.polyline;
這樣就不需要在 onPostExecute(-) 中捕獲結果

TA貢獻1831條經驗 獲得超10個贊
AsyncTask將在異步執行的后臺線程中執行任務。配售String polyline = mapInfo.polyline;后,立即new AsyncTask blah = blahblah.execute("");將立即執行,因為控制會觸發AsyncTask并繼續執行下一個語句
如果需要String polyline = mapInfo.polyline;在任務執行后執行onPostExecute(),則按如下方式放置:
@Override
protected void onPostExecute(final MapInfo mapInfo) {
super.onPostExecute(mapInfo);
...
final String polyline = mapInfo.polyline;
}

TA貢獻1848條經驗 獲得超10個贊
您不應該使用AsyncTask
API 調用,因為 API 服務(Retrofit、Volley 等)已經在后臺線程中運行。
由于AsyncTask
API 調用服務在不同的線程中工作,因此數據不會相應地更新。
相反,您應該使用onSuccess
API的方法方法在MainActivity
添加回答
舉報