in LeanbackShowcase/app/src/main/java/androidx/leanback/leanbackshowcase/app/media/PlaybackSeekAsyncDataProvider.java [135:157]
protected void prefetch(int hintIndex, boolean forward) {
for (Iterator<Map.Entry<Integer, Bitmap>> it =
mPrefetchCache.snapshot().entrySet().iterator(); it.hasNext(); ) {
Map.Entry<Integer, Bitmap> entry = it.next();
if (forward ? entry.getKey() < hintIndex : entry.getKey() > hintIndex) {
mPrefetchCache.remove(entry.getKey());
}
}
int inc = forward ? 1 : -1;
for (int i = hintIndex; (mRequests.size() + mPrefetchCache.size()
< mPrefetchCache.maxSize()) && (inc > 0 ? i < mSeekPositions.length : i >= 0);
i += inc) {
Integer key = i;
if (mCache.get(key) == null && mPrefetchCache.get(key) == null) {
LoadBitmapTask task = mRequests.get(i);
if (task == null) {
task = new LoadBitmapTask(key, null);
mRequests.put(i, task);
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
}
}
}