ListenableFutureRemoteMediator
abstract class ListenableFutureRemoteMediator<Key : Any, Value : Any> : RemoteMediator<Key, Value>
kotlin.Any | ||
↳ | androidx.paging.RemoteMediator<Key, Value> | |
↳ | androidx.paging.ListenableFutureRemoteMediator |
ListenableFuture-based compatibility wrapper around RemoteMediator's suspending APIs.
Summary
Public constructors | |
---|---|
<init>() ListenableFuture-based compatibility wrapper around RemoteMediator's suspending APIs. |
Public methods | |
---|---|
suspend RemoteMediator.InitializeAction |
Callback fired during initialization of a PagingData stream, before initial load. |
open ListenableFuture<RemoteMediator.InitializeAction> |
Callback fired during initialization of a PagingData stream, before initial load. |
suspend RemoteMediator.MediatorResult |
load(loadType: LoadType, state: PagingState<Key, Value>) Callback triggered when Paging needs to request more data from a remote source due to any of the following events: |
abstract ListenableFuture<RemoteMediator.MediatorResult> |
loadFuture(loadType: LoadType, state: PagingState<Key, Value>) Implement this method to load additional remote data, which will then be stored for the PagingSource to access. |
Public constructors
<init>
ListenableFutureRemoteMediator()
ListenableFuture-based compatibility wrapper around RemoteMediator's suspending APIs.
Public methods
initialize
suspend fun initialize(): RemoteMediator.InitializeAction
Callback fired during initialization of a PagingData stream, before initial load.
This function runs to completion before any loading is performed.
Return | |
---|---|
InitializeAction | used to control whether load with load type REFRESH will be immediately dispatched when the first PagingData is submitted: |
initializeFuture
open fun initializeFuture(): ListenableFuture<RemoteMediator.InitializeAction>
Callback fired during initialization of a PagingData stream, before initial load.
This function runs to completion before any loading is performed.
Return | |
---|---|
InitializeAction | indicating the action to take after initialization: |
load
suspend fun load(
loadType: LoadType,
state: PagingState<Key, Value>
): RemoteMediator.MediatorResult
Callback triggered when Paging needs to request more data from a remote source due to any of the following events:
- Stream initialization if initialize returns LAUNCH_INITIAL_REFRESH
- REFRESH signal driven from UI
- PagingSource returns a LoadResult which signals a boundary condition, i.e., the most
recent LoadResult.Page in the PREPEND or APPEND direction has
LoadResult.Page.prevKey or LoadResult.Page.nextKey set to
null
respectively.
It is the responsibility of this method to update the backing dataset and trigger PagingSource.invalidate to allow androidx.paging.PagingDataAdapter to pick up new items found by load.
The runtime and result of this method defines the remote LoadState behavior sent to the UI via CombinedLoadStates.
This method is never called concurrently unless Pager.flow has multiple collectors. Note that Paging might cancel calls to this function if it is currently executing a PREPEND or APPEND and a REFRESH is requested. In that case, REFRESH has higher priority and will be executed after the previous call is cancelled. If the load call with REFRESH returns an error, Paging will call load with the previously cancelled APPEND or PREPEND request. If REFRESH succeeds, it won't make the APPEND or PREPEND requests unless they are necessary again after the REFRESH is applied to the UI.
Parameters | |
---|---|
loadType: LoadType | LoadType of the condition which triggered this callback. |
state: PagingState<Key, Value> | A copy of the state including the list of pages currently held in memory of the currently presented PagingData at the time of starting the load. E.g. for load(loadType = APPEND), you can use the page or item at the end as input for what to load from the network. |
Return | |
---|---|
MediatorResult | signifying what LoadState to be passed to the UI, and whether there's more data available. |
loadFuture
abstract fun loadFuture(
loadType: LoadType,
state: PagingState<Key, Value>
): ListenableFuture<RemoteMediator.MediatorResult>
Implement this method to load additional remote data, which will then be stored for the PagingSource to access. These loads take one of two forms:
- type == Load