/* * TODO Should the disk requests use Strings? Or URIs? * * TODO Consider changing the List to a Set so that requests are not duplicated. */ public void onPositionVisited(int position) { calculateDirection(position); RangesToCache ranges = calculateRanges(position); for (int i = ranges.diskCacheLowerIndex; i < ranges.diskCacheUpperIndex; i++) { List<String> precacheRequestUris = mPrecacheInformationProvider.getRequestsForDiskPrecache(i); precacheListToDisk(precacheRequestUris, position); } for (int i = ranges.memCacheLowerIndex; i < ranges.memCacheUpperIndex; i++) { List<PrecacheRequest> precacheRequests = mPrecacheInformationProvider.getRequestsForMemoryPrecache(i); precacheListToMemory(precacheRequests, position); } }
private void calculateRangesForDown(int position, RangesToCache indices) { int count = mPrecacheInformationProvider.getCount(); if (isFirstCalculation) { indices.memCacheLowerIndex = Math.min(count, position + 1); } else { indices.memCacheLowerIndex = Math.min(count, position + mMemCacheRange); } indices.memCacheUpperIndex = Math.min(count, position + 1 + mMemCacheRange); if (isFirstCalculation) { indices.diskCacheLowerIndex = Math.min(count, indices.memCacheUpperIndex); } else { indices.diskCacheLowerIndex = Math.min(count, indices.memCacheUpperIndex + mDiskCacheRange - 1); } indices.diskCacheUpperIndex = Math.min(count, indices.memCacheUpperIndex + mDiskCacheRange); isFirstCalculation = false; }