从Fragment

时间:2016-08-04 17:44:55

标签: android android-fragments asynchronous android-asynctask

我看到很多帖子说你应该把你的异步任务放在片段中(我不记得其他方式),所以你可以旋转屏幕并保留它...

但它不适合我

活动显示片段;

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)没有持有实例?

0 个答案:

没有答案