LazyGridPrefetchStrategy

Interface

Common
@ExperimentalFoundationApi
interface LazyGridPrefetchStrategy

Implementations of this interface control which indices of a LazyGrid should be prefetched (precomposed and premeasured during idle time) as the user interacts with it.

Implementations should invoke LazyGridPrefetchScope.scheduleLinePrefetch to schedule prefetches from the onScroll and onVisibleItemsUpdated callbacks. If any of the returned PrefetchHandles no longer need to be prefetched, use LazyLayoutPrefetchState.PrefetchHandle.cancel to cancel the request.

Properties

Common

Deprecated Customization of PrefetchScheduler is no longer supported. LazyLayout will attach an appropriate scheduler internally.

val prefetchScheduler: PrefetchScheduler?

A PrefetchScheduler implementation which will be used to execute prefetch requests for this strategy implementation. If null, the default PrefetchScheduler for the platform will be used.

Functions

fun LazyGridPrefetchScope.onScroll(delta: Float, layoutInfo: LazyGridLayoutInfo)

onScroll is invoked when the LazyGrid scrolls, whether or not the visible items have changed. If the visible items have also changed, then this will be invoked in the same frame after onVisibleItemsUpdated.

Parameters

deltathe change in scroll direction. Delta < 0 indicates scrolling down while delta > 0 indicates scrolling up.
layoutInfothe current LazyGridLayoutInfo
fun LazyGridPrefetchScope.onVisibleItemsUpdated(layoutInfo: LazyGridLayoutInfo)

onVisibleItemsUpdated is invoked when the LazyGrid scrolls if the visible items have changed.

Parameters

layoutInfothe current LazyGridLayoutInfo. Info about the updated visible items can be found in LazyGridLayoutInfo.visibleItemsInfo.
fun NestedPrefetchScope.onNestedPrefetch(firstVisibleItemIndex: Int)

onNestedPrefetch is invoked when a parent LazyLayout has prefetched content which contains this LazyGrid. It gives this LazyGrid a chance to request prefetch for some of its own children before coming onto screen.

Implementations can use NestedPrefetchScope.schedulePrefetch to schedule child prefetches. For example, this is useful if this LazyGrid is a LazyRow that is a child of a LazyColumn: in that case, onNestedPrefetch can schedule the children it expects to be visible when it comes onto screen, giving the LazyLayout infra a chance to compose these children ahead of time and reduce jank.

Generally speaking, onNestedPrefetch should only request prefetch for children that it expects to actually be visible when this grid is scrolled into view.

Parameters

firstVisibleItemIndexthe index of the first visible item. It should be used to start prefetching from the correct index in case the grid has been created at a non-zero offset.