如何在后台做GUI的东西? (机器人)

时间:2017-09-14 12:44:10

标签: java android android-viewpager android-gui

我尝试用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的最佳方法是什么?

1 个答案:

答案 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());
        }
    });

但我宁愿使用线程池,它们提供更多控制。