【问题标题】:Android/Java: onProgressUpdate() not being called?Android/Java:onProgressUpdate() 没有被调用?
【发布时间】:2012-05-22 17:19:14
【问题描述】:

我在这里读过类似的帖子,甚至用谷歌搜索但没有解决方案。

onProgressUpdate() 只是没有被调用。

代码如下:

public class DoHardWork extends AsyncTask {

    @Override
    protected Object doInBackground(Object... params) {


        publishProgress("Requesting XML data");
        this.requestData();

        publishProgress("Returning results");
        this.returnResults();

        return null;
    }



    protected void onProgressUpdate(String text) {
        super.onProgressUpdate(text);
        MainActivity.setLog(text);
    }
}

我尝试在 onProgressUpdate() 中设置断点,但它从未被调用。就像代码被忽略了一样。

有人遇到了类似的问题,结果证明只是 eclipse 只是在惹他,但我尝试重新启动它没有成功。

有什么想法吗?

【问题讨论】:

    标签: java android breakpoints


    【解决方案1】:

    我认为您在代码中遗漏了一些内容。试试这个:

    private class DoHardWork extends AsyncTask<Void, String, Long> {
        protected Long doInBackground(Void... urls) {
             publishProgress("Requesting XML data");
             this.requestData();
    
             publishProgress("Returning results");
             this.returnResults();
    
             return null;
        }
    
        protected void onProgressUpdate(String... progress) {
            super.onProgressUpdate(progress);
            MainActivity.setLog(progress[0]);
        }
    
    
    }
    

    【讨论】:

    • 做到了!我是 Java 的新手,所以我尽量保持简单,我不知道需要泛型。还有一个问题,为什么我不能从 onCancelled() 调用 publishProgress()?这似乎应该是可能的。
    • 你可以调用 publishProgress() 但在泛型的第二个值上你必须放 Void,像这样:DoHardWork extends AsyncTask。看看这个链接developer.android.com/reference/android/os/AsyncTask.html
    • 更好的是,在你的方法声明中添加@Override,你不必猜测你是否做对了,编译器会帮你做的。
    猜你喜欢
    • 2012-07-14
    • 2017-01-24
    • 2017-10-28
    • 2016-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多