나는 asynctask
과 gui 물건을하려고했지만 모든 장치에서 작동하지 않습니다. 왜?백그라운드에서 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 작업을 수행하는 가장 좋은 방법은 무엇입니까?
백그라운드에서 UI 작업을 수행 할 수 없으며 해당 코드로도 UI 작업을 수행 할 수 없습니다. onPostExecute는 UI 스레드에서 실행됩니다. –
@TimCastelijns OP가 onPostExecute에서 호출하는 메서드가 백그라운드에서 실행되지 않도록 호출합니다. –
자세히 설명해주십시오. "그렇지 않다"는 의미입니다. 디버거를 사용하거나 문장을 기록 할 때 무슨 일이 일어나고 있는지 알기 위해 무엇을 배웠습니까? 왜 처음에는 AsyncTask를 사용하고 있습니까? 디스크 I/O 또는 네트워크 I/O가 진행되지 않습니다. – CommonsWare