【问题标题】:Android AsyncTask publishProgress external classAndroid AsyncTask publishProgress 外部类
【发布时间】:2014-04-26 16:48:37
【问题描述】:

可以从外部类调用 AsyncTask 的 publishProgress 方法吗? 我写了一个下载文件的类:

    public class ProgressDialogAsyncTask extends AsyncTask<Void, Long, Boolean> {
         protected Boolean doInBackground(Void... params) {
            HttpConnection.downloadFile(mContext,
                            HttpConnection.getFileLength());
         ...
         }
      }

它可以工作(文件已下载),但我需要一个进度条,这个进度是进入 HttpConnection 类的。 可以在HttpConnection类中调用publishProgress方法吗?

谢谢

【问题讨论】:

    标签: android class android-asynctask


    【解决方案1】:

    你必须在 doInBackground() 中调用 publishProgress。

    然后向 ProgressDialogAsyncTask 添加另一个方法:onProgressUpdate()。每当在您的后台线程中调用 publishProgress() 时都会调用这个...在 ProgressUpdate() 上,然后您可以调用进度条... HttpConnection.showProgress() 或其他任何东西:)

    例子:

    public class ProgressDialogAsyncTask extends AsyncTask<Void, Long, Boolean> {
         protected Boolean doInBackground(Void... params) {
    
            int count = 0;
            HttpConnection.downloadFile(mContext,
                            HttpConnection.getFileLength());
    
            publishProgress(count);
         ...
         }
    
         protected void onProgressUpdate(Long...update) {
             HttpConnection.showProgress(update[0]);
         }
    
      }
    

    【讨论】:

    • 好的,这不是我的情况,因为我需要在HttpConnection类中调用publishProgress(用于进度下载文件)
    • publishProgress 只能从 AsyncTask 内部调用,其他任何事情都没有多大意义,对吧?您的代码是错误的方法, HttpConnection 应该是您的 AsyncTask 并且没有理由拥有 ProgressDialogAsyncTask ...
    • 好的,我换个方式,因为HttpConnection是从不同的类调用的
    猜你喜欢
    • 2011-01-23
    • 2011-06-25
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多