【发布时间】:2017-09-14 12:44:10
【问题描述】:
我尝试用asynctask 做gui 的东西,但它并不适用于所有设备。为什么?
这是我的代码:
public class DownloadWebPageTask extends AsyncTask<ReadEvent, Void, String> {
long difference;
ReadEvent readevent;
@Override
protected String doInBackground(ReadEvent... readevents) {
this.difference = (readevents[0].getDtstart() - calendar_millis) / 1000 / 24 / 60 / 60;
this.readevent = readevents[0];
return "";
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
MonthFragment.this.addDate((int) difference + MonthFragment.this.start - 1, readevent.getEventname(), readevent.getCalendarid(), readevent.getEventcolor());
}
}
这是在fragment 内。 addDate 方法将TextView 添加到GUI。它在 Honor Huawei 6X Honor (Android 7.0) 上运行良好。在 BQ Aquaris X5 (Android 7.1.1) 上没有。
在后台做 GUI 的最好方法是什么?
【问题讨论】:
-
您不能在后台执行 (G)UI 的操作,而且您也没有使用该代码执行此操作。 onPostExecute 在 UI 线程上运行
-
@TimCastelijns OP 所说的方法是从 onPostExecute 调用的,因此它不在后台。
-
请详细解释“它不”是什么意思。当您使用调试器或记录语句来查看发生了什么时,您学到了什么?你为什么首先在这里使用
AsyncTask?没有磁盘 I/O 或网络 I/O 正在进行。 -
@CommonsWare:我有一个浏览器。当我滚动时,它应该在加载片段之前加载数据。
-
这并不能解释你为什么在这里使用
AsyncTask。
标签: java android android-viewpager android-gui