我希望在它的类中使用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进度的通知?
答案 0 :(得分:1)
您可以通过asynctask构造函数传递您的类的上下文。通过使用该上下文,您可以访问类的显示相关方法
所以在你单独的AsyncTask类中创建一个像
这样的构造函数Context c;
public Download(Context c){
context = c;
}
从主课程中你可以调用
new Download(this).execute();
通过使用上下文,您可以访问类的公共组件
答案 1 :(得分:0)
只需在类中设置int progress
var并在进度时更新它并在异步任务类中生成getter方法,这样用户就可以使用getProgress()方法从异步任务中获取进度。
或
您可以在异步任务中创建用户应该实现的接口,以便他们可以获得异步任务进度的回调。