gpt4 book ai didi

java - 在 AsyncTack 中使用 ProgressDialog 从扩展 Application 的类中调用

转载 作者:行者123 更新时间:2023-12-01 05:01:34 24 4
gpt4 key购买 nike

我用自己的数据类扩展到了应用程序类。它用于在我的应用程序中存储全局对象,并使所有 Acitivites 都可以访问它们。我希望此类在应用程序运行时初始化时通过 AsyncTask 从互联网下载数据。如何在 AsyncTask 中显示/隐藏 ProgressDialog,这需要我将正确的上下文/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();
}
}
}

最佳答案

我最终以这种方式从我的 MainActivity 调用数据源加载。

public class MainActivity extends Activity {

//onclick function...
myDataSource = (DataSource)getApplicationContext();
myDataSource.beginDataLoad(MainActivity.this);

//Callback for AsyncTask to call when its completed
public void dataIsLoaded() {
//Do stuff once data has been loaded
}
}

关于java - 在 AsyncTack 中使用 ProgressDialog 从扩展 Application 的类中调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13324812/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com