簡體   English   中英

在 Android 分頁庫數據源中處理 Observable

[英]Disposing Observable Inside Android Paging Library Data Source

我想觀察我的 PageKeyedDataSource 中的網絡調用更改,並在用戶退出導致數據源破壞的 Fragment 后處理 RxJava訂閱

class ProjectDataSource : PageKeyedDataSource<Int, ProjectPresenter>(), KoinComponent {
    ...

    override fun loadInitial(
        params: LoadInitialParams<Int>,
        callback: LoadInitialCallback<Int, ProjectPresenter>
    ) {
        val subscription = mProjectRepository.getProjects(DEFAULT_TAKE, 0)
            .subscribe(
                { projectPresenters ->
                    ...
                },
                { throwable ->
                    ...
                }
            )
          //Where to dispose `subscription`
    }

    ...
}

我的RepositoryDataSource都有 RxJava 訂閱,它們都對數據執行不同的操作。 存儲庫將遠程 model 轉換為演示者 model 和...

我不確定在 DataSource 中觀察數據是否是個好主意。

我無法提供任何實質性證據證明我的方式是“正確的方式”,但這是我的想法,並且通常在實施中遵循:

  1. 除非有一些非常邊緣的情況,否則我不會處理存儲庫或數據源下的配置
  2. 如果我的存儲庫正在使用 Rx,我只是將我的所有 Rx 實體(Completable's、Single's 等)暴露給消費者(通常是視圖模型),他們訂閱並管理處置(在許多情況下通過在onCleared中清除它們)
  3. 如果我的分頁數據源正在使用 Rx(順便說一句,這可能會在失效期間導致不需要的 UI 效果,最好在數據源loadInitial和類似方法中運行阻塞操作),我正在通過數據源工廠從視圖 model 路由CompositeDisposable實例.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM