3 回答

TA貢獻1785條經(jīng)驗 獲得超8個贊
AsyncTask在異步執(zhí)行的后臺線程中執(zhí)行任務。任務執(zhí)行后獲取結果的兩種方式:
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條經(jīng)驗 獲得超10個贊
AsyncTask將在異步執(zhí)行的后臺線程中執(zhí)行任務。配售String polyline = mapInfo.polyline;后,立即new AsyncTask blah = blahblah.execute("");將立即執(zhí)行,因為控制會觸發(fā)AsyncTask并繼續(xù)執(zhí)行下一個語句
如果需要String polyline = mapInfo.polyline;在任務執(zhí)行后執(zhí)行onPostExecute(),則按如下方式放置:
@Override
protected void onPostExecute(final MapInfo mapInfo) {
super.onPostExecute(mapInfo);
...
final String polyline = mapInfo.polyline;
}

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