我試圖用asynctask
做gui的東西,但它不適用於每個設備。爲什麼?如何在後臺做GUI的東西? (Android)
這裏是我的代碼:
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。它對榮譽華爲6X榮譽(Android 7.0)非常有用,它的效果非常好。在BQ Aquaris X5(Android 7.1.1)上沒有。
什麼是最好的辦法,在後臺做GUI的東西?
你不能在背景中做(G)UI的東西,而且你也沒有用它做代碼。 onPostExecute在UI線程上運行 –
@TimCastelijns OP所講的方法是從onPostExecute調用的,所以它不在後臺。 –
請詳細解釋「它不」的含義。當您使用調試器或日誌記錄來查看發生了什麼時,您學到了什麼?你爲什麼首先在這裏使用'AsyncTask'?沒有磁盤I/O或網絡I/O正在進行。 – CommonsWare