【发布时间】:2014-09-07 23:21:16
【问题描述】:
我正在编写我的第一个 Android 应用程序,但在关闭 onPostExecute 中的 ProgressDialog 时遇到了一些问题。我已经在 SO 上阅读了许多类似的问题,但这些解决方案似乎都没有解决我的特定问题。
对话框出现并关闭,但它没有按照我想要的方式进行。动画在 Filter.apply() 启动时冻结,直到 Filter.apply 完成后才会关闭。 Filter.apply() 是另一个从不同地方调用的时间密集型过程。这个方法会有自己的 ProgressDialog。
我做错了什么?
这是我的异步任务
public class JSONFetchFMTask extends AsyncTask<Void, Void, Void> {
private Activity activity;
private ProgressDialog dialog;
public JSONFetchFMTask() {}
@Override
protected void onPreExecute() {
Context context = FM.getAppContext();
Activity activity = ((FM)context.getApplicationContext()).getCurrentActivity();
dialog = ProgressDialog.show(activity, "", "Downloading Data", true);
}
@Override
protected Void doInBackground(Void... params) {
// Process intensive code was here
return null;
}
@Override
protected void onPostExecute(Void result) {
if (dialog != null && dialog.isShowing()) {
dialog.dismiss();
}
Filter.apply();
}
}
这是我的 FM 课:
public class FM extends Application {
private static Context context;
private Activity currentActivity;
public void onCreate(){
super.onCreate();
FM.context = getApplicationContext();
}
public static Context getAppContext() {
return FM.context;
}
public Activity getCurrentActivity(){
return this.currentActivity;
}
public void setCurrentActivity(Activity currentActivity) {
this.currentActivity = currentActivity;
}
}
【问题讨论】: