我用自己的数据类扩展到应用程序类。它用于在我的应用程序中存储全局对象,并使所有 Acitivites 都可以访问它们。我希望这个类在应用程序运行时初始化,通过 AsyncTask 从互联网下载数据。如何在 AsyncTask 中显示/隐藏 ProgressDialog,这需要我将正确的上下文/活动传递给它?
public class DataSource extends Application{
private int userid;
private Object[] orders;
//initialize
@Override
public void onCreate() {
// Pull data from the internet and store it in orders
super.onCreate();
}
public void beginDataLoad(Activity callingActivity) {
// HOW DO I PASS THE CORRECT ACTIVITY TO MY NEW downloadData OBJECT?
downloadData task = new downloadData(callingActivity);
task.execute(new String[] { "http://www.myurl.com" });
}
private class downloadData extends AsyncTask<String, Void, String>{
private ProgressDialog progressDialog;
private MainActivity activity;
public downloadData(MainActivity activity) {
this.activity = activity;
this.progressDialog = new ProgressDialog(activity);
}
protected void onPreExecute() {
progressDialog.setMessage("Downloading events...");
progressDialog.show();
}
protected String doInBackgroun(String... params) {
// Do AsyncTask download functions in background...
}
protected void onPostExecute() {
progressDialog.dismiss();
//Callback function in MainActivity to indicate data is loaded
activity.dataIsLoaded();
}
}
}