我有一个包含以下方法的嵌套片段:
public void onSave() {
if (getActivity() == null || view == null) return;
if (file != null && file.exists()) {
new AsyncTask<Void, Void, Void>() {
@Override
protected void onPreExecute() {
Log.d("log", "onPreExecute of save ex");
}
@Override
protected Void doInBackground(Void... params) {
Log.d("log", "doInBackground of save ex");
//DO SOMETHING
return null;
}
protected void onPostExecute(Void result) {
BaseFragment fragment = new LocalListFragment();
((LocalLauncherFragment)(LocalEditFragment.this.getParentFragment())).setFragment(fragment);
Log.d("log", "end of save ex");
};
}.execute();
} else {
showAlert();
}
}
我的问题是,如果我第一次调用这个方法,它会一直执行到 onPostExecute()。但是,如果我去其他片段并新打开这个片段(通过创建一个新的片段对象并替换它),那么只有 onPreExecute() 被执行。为什么这个 asyncTask 对象第二次不能很好地执行?
有趣的是,如果我使用 executeOnExecutor() 那么它第二次工作正常。但是为什么不执行()工作?AsyncTask 的生命与片段或其他东西有关吗?
提前致谢!