【问题标题】:How to AsyncTask Android? [duplicate]如何 AsyncTask Android? [复制]
【发布时间】:2018-07-30 08:39:44
【问题描述】:

我找不到使用 AsyncTask 更新 UI 的方法

这是我的伪代码

public class MissionsActivity extends Activity {

private class UpdateMissions extends AsyncTask<Void, Long, Void> {
    protected Void doInBackground(Void... voids) {
        while(true) {

            try {
                Thread.sleep(250);/
                /*HERE I GET time1, time2, time3 and currentTime READING A FILE*/
                publishProgress(time1,time2,time3,currentTime);
            } catch (Exception e) {

            }
        }
    }

protected void onProgressUpdate(Long time1, Long time2, Long time3, Long currentTime) {
        /*HERE I MANIPOLATE time1, time2, time3 and currentTime TO UPDATE THE UI*/
}

然后在主类(继承Activity的那个)中,在onCreate中我做

    update = new UpdateMissions();
    update.execute(null,null,null);

但它什么也没做。我真的在这里碰壁了,我需要认真的帮助,因为我以前从未使用过 AsyncTask。

while(true) 部分不允许我进入 pre 或 post 执行方法,所以我必须使用进度之一,但我无法找到错误所在。

提前致谢

【问题讨论】:

标签: android android-asynctask


【解决方案1】:

别忘了把@Override放在需要的函数上

参考答案:AsyncTask Android example

private class LongOperation extends AsyncTask<String, Void, String> {

        @Override
        protected String doInBackground(String... params) {
            for (int i = 0; i < 5; i++) {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    Thread.interrupted();
                }
            }
            return "Executed";
        }

        @Override
        protected void onPostExecute(String result) {
            // To Modify UI, you need to do it here
        }

        @Override
        protected void onPreExecute() {}

        @Override
        protected void onProgressUpdate(Void... values) {}
    }

【讨论】:

    【解决方案2】:
    while(true) 
    

    part 不会阻止您使用 onPreExecute 和 onPostExecute 。 他们仍在被处决。你只需要覆盖它们并在那里更新 UI 部分。

    【讨论】:

      【解决方案3】:

      你不能在后台更新 UI,但是你可以在 AsyncTask 的onPostExecute() 方法中更新

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-30
        • 2014-02-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-11
        • 2012-03-28
        • 2011-06-12
        相关资源
        最近更新 更多