3 回答
![?](http://img1.sycdn.imooc.com/5333a1a90001c8d802000200-100-100.jpg)
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(-) 中捕获结果
![?](http://img1.sycdn.imooc.com/5333a1d100010c2602000200-100-100.jpg)
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;
}
![?](http://img1.sycdn.imooc.com/5458502c00012d4a02200220-100-100.jpg)
TA贡献1848条经验 获得超10个赞
您不应该使用AsyncTask
API 调用,因为 API 服务(Retrofit、Volley 等)已经在后台线程中运行。
由于AsyncTask
API 调用服务在不同的线程中工作,因此数据不会相应地更新。
相反,您应该使用onSuccess
API的方法方法在MainActivity
添加回答
举报