RxJava 2 + Retrofit 2(或长异步任务)+ Dagger 2 + MVP VS.改变方向

时间:2017-01-29 14:55:30

标签: android orientation mvp dagger-2 rx-java2

学习如何使用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可以帮助我分离视图和模型(改装请求)层。谢谢你的回答。

1 个答案:

答案 0 :(得分:1)

您可以查看此implementation,它会创建 BaseActivity ,如果需要在配置更改后继续存在,则必须扩展每个Activity。

它使用 Dagger2 ,您可以找到 ConfigPersistentComponent here,只需使用注释@ ConfigPersistent 范围用于注释需要存活的依赖项,例如演示者。