我尝试用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的最佳方法是什么?
答案 0 :(得分:-1)
AsyncTask在平台之间相当不一致。请在onPostExecute
中尝试此操作:
if (getView() != null)
getView().post(new Runnable() {
public void run() {
MonthFragment.this.addDate((int) difference + MonthFragment.this.start - 1, readevent.getEventname(), readevent.getCalendarid(), readevent.getEventcolor());
}
});
但我宁愿使用线程池,它们提供更多控制。