Пограничный обратный вызов (библиотека подкачки Android) с CoroutineScope - PullRequest
0 голосов
/ 31 декабря 2018

Я пытаюсь реализовать Android Paging library с ViewModel и Kotlin Coroutines

У меня есть ViewModel, который реализует CoroutineScope.Это зависит от Repository:

class MovieListViewModel(
    private val movieRepository: MovieRepository
) : ViewModel(), CoroutineScope {

    private val job = Job()
    override val coroutineContext: CoroutineContext
        get() = job + Dispatchers.IO

    private lateinit var _movies: LiveData<PagedList<MovieBrief>>

    val movies: LiveData<PagedList<MovieBrief>>
        get() = _movies

    init {
        launch {
            _movies = LivePagedListBuilder(movieRepository.getMovies(), DATABASE_PER_PAGE)
                .setBoundaryCallback(movieRepository.movieBoundaryCallback)
                .build()
        }
    }

}

И это мой Repository.Я внедряю BoundaryCallback с помощью Kodein Dependecy Injector.

class MovieRepositoryImpl(
    private val movieDao: MovieDao,
    boundaryCallback: MovieBoundaryCallback
) : MovieRepository {

    override suspend fun getMovies(): DataSource.Factory<Int, MovieBrief> {
        return movieDao.getMovies()
    }

    override val movieBoundaryCallback = boundaryCallback

}

Внутри BoundaryCallback класса onItemAtEndLoaded вызывает RESTAPI и затем сохраняет данные в базе данных Room (обе являются функциями приостановки).Поэтому я должен получить доступ к области сопрограмм моего ViewModel.Какая лучшая практика для достижения этой цели?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...