独自のデータ クラスを使用して Application クラスに拡張しました。アプリにグローバル オブジェクトを保存し、すべてのアクティビティからアクセスできるようにするために使用されます。このクラスは、アプリケーションの実行時に初期化されたときに、AsyncTask を介してインターネットからデータをダウンロードしたいと考えています。AsyncTask 内で ProgressDialog を表示/非表示にするには、正しい Context/Activity を渡す必要がありますか?
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();
}
}
}