我看到很多帖子说你应该把你的异步任务放在片段中(我不记得其他方式),所以你可以旋转屏幕并保留它...
但它不适合我
活动显示片段;
MyGetJsonFragment frag= ....
frag.setRetainInstance(true);
fm = getSupportFragmentManager();
ft = fm.beginTransaction();
ft.replace(R.id.fragment_main, frag);
ft.commit();
比,在这个片段中我有一个RecyclerView,当用户点击列表中的任何项目时,它调用适配器并在适配器onBindViewHolder内部我实现了onClick来调用AsyncTask
holder.button_get.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new AsyncGet(activity, AdapterList.this).execute();
}
});
如果我使用configChanges(android:configChanges="orientation|keyboardHidden|screenSize
)
在清单它工作正常,但我听说并读到这不是一个好的解决方法!
删除configChanges之后,如果我旋转屏幕,进度对话框消失,而不是在帖子执行中我在progressdialog.dissmiss或任何其他依赖于活动的事情上得到错误
我理解活动生命周期,当我旋转启动异步的原始文件时会被销毁并创建新的...
但是我怎么能处理它并仍然显示progressdialog?
我需要async中的Context / Activity来启动进度,我在postExecute中有一些使用Activity / Context
的db方法以及为什么setRetainInstance(true)
没有持有实例?