在其他类中使用AsyncTask

时间:2014-01-02 07:01:18

标签: android android-asynctask

我希望在它的类中使用asynctask,原因是稍后我需要将此类导出为外部jar,以便用户可以将其添加到他的项目中并使用它。

class DownloadFile extends AsyncTask<String, Integer, String>
{

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

        for (int i = 0; i < files; i++) 
        {
            //send file to download
        }

        return null;
    }


    @Override
    protected void onProgressUpdate(Integer... values) {

        //need to send notification to main class

        //pr_bar.setProgress(values[0]);
        super.onProgressUpdate(values);
    }

    public boolean ftpDownload(String srcFilePath, String desFilePath,  final long size_server) {

                //download file
                publishProgress((int) prog);
            }
        };

    @Override
    protected void onPostExecute(String result) {

        super.onPostExecute(result);
    }
}

当用户使用:

public class UserClass extends Activity {

String serialnum = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_userclass);

         new Download().execute();
}

他班上的用户如何获得有关asynctask进度的通知?

2 个答案:

答案 0 :(得分:1)

您可以通过asynctask构造函数传递您的类的上下文。通过使用该上下文,您可以访问类的显示相关方法

所以在你单独的AsyncTask类中创建一个像

这样的构造函数
Context c;
public Download(Context c){
   context  = c;
}

从主课程中你可以调用

 new Download(this).execute();

通过使用上下文,您可以访问类的公共组件

答案 1 :(得分:0)

只需在类中设置int progress var并在进度时更新它并在异步任务类中生成getter方法,这样用户就可以使用getProgress()方法从异步任务中获取进度。

您可以在异步任务中创建用户应该实现的接口,以便他们可以获得异步任务进度的回调。