学习如何使用RxJava和长任务来处理更改方向,阅读有关保留片段和一些保存视图状态的信息,但对我来说仍然不清楚。
想象一下,我们通过改造提出了网络请求:
Retrofit retrofit = ApiClient.getClient(); //get retrofit instance
retrofit.create(ApiInterface.class).getImageList() // get list of image objects
.map(this::sleepDear)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this::setupRecyclerView);
sleepDear()
public ImageResponse sleepDear(ImageResponse response) throws InterruptedException {
for (int i = 0; i < 5; i++) {
Log.d(TAG, "SLEEP");
TimeUnit.SECONDS.sleep(1);
}
return response;
}
setupRecyclerView()
public void setupRecyclerView(ImageResponse response) {
bar.setVisibility(View.GONE);
Log.d(TAG, "response size " + response.getImageList().size());
ImageAdapter adapter = new ImageAdapter(MainActivity.this, response.getImageList());
recyclerView.setAdapter(adapter);
}
sleepDear()方法模拟长时间计算(5秒),然后setupRecyclerView()将数据从请求转换为recyclerview,当我改变方向时,它会下降并重新开始。什么是最好的解决方案? MVP可以帮助我分离视图和模型(改装请求)层。谢谢你的回答。
答案 0 :(得分:1)
您可以查看此implementation,它会创建 BaseActivity ,如果需要在配置更改后继续存在,则必须扩展每个Activity。
它使用 Dagger2 ,您可以找到 ConfigPersistentComponent here,只需使用注释@ ConfigPersistent 范围用于注释需要存活的依赖项,例如演示者。