use*_*024 6 android fragment android-asynctask
我有一个包含以下方法的嵌套片段:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果我第一次调用此方法,它将执行直到onPostExecute().但是,如果我转到其他片段并重新打开此片段(通过创建一个新的片段对象并替换它),则只执行onPreExecute().为什么这个asyncTask对象第二次没有很好地执行?
如果我使用executeOnExecutor()那么它会在第二次正常工作.但为什么不执行()工作?AsyncTask的生活是否与片段或其他东西联系在一起?
提前致谢!
在我看来,好像有什么东西挂在里面AsyncTask。在现代版本的 Android 中,除非您指定多线程,AsyncTask否则它们在单线程上运行。仍然运行成功,因为它在主线程上运行。但您永远不会看到第二次,因为单个后台线程仍然因第一次调用而挂起。您需要检查 的内容以了解导致挂起的原因。ExecutoronPreExecute()doInBackgroundLocalKeekLauncherFragment.setFragment(fragment)
| 归档时间: |
|
| 查看次数: |
9184 次 |
| 最近记录: |