Будешь ли использовать пейджинг по дате сообщений или количеству сообщений

«Будешь ли использовать пейджинг по дате сообщений или количеству сообщений» — вопрос из категории Архитектура, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Лучше использовать пейджинг по дате, так как он более предсказуем для пользователя и лучше работает с бесконечной лентой. При пейджинге по количеству могут возникать проблемы при изменении данных (удаление/добавление сообщений), что приведёт к дублированию или пропуску контента.

Пример реализации на Kotlin с Paging 3:

class MessagesPagingSource : PagingSource<Long, Message>() {
    override suspend fun load(params: LoadParams<Long>): LoadResult<Long, Message> {
        val beforeTime = params.key ?: System.currentTimeMillis()
        val messages = api.getMessages(beforeTime, params.loadSize)
        return LoadResult.Page(
            data = messages,
            prevKey = null, // только вперед
            nextKey = messages.lastOrNull()?.timestamp
        )
    }
}