feat(android): cache (#3514)
* feat: android cache * docs: bufferSize * Revert "docs: bufferSize" This reverts commit 09637b134e121b9ca3ffd78f2f5bc657319ed67a. * fix: cacheSize name * feat: singleton android cache * fix: local cache resolve * fix: lint * docs: android cache * chore: merge conflict * fix: lint * chore: useCache button * chore: fix state in the sample * fix: cache factory * chore: update cacheSizeMB docs --------- Co-authored-by: Olivier Bouillet <freeboub@gmail.com>
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
package com.brentvatne.exoplayer
|
||||
|
||||
import android.content.Context
|
||||
import androidx.media3.database.StandaloneDatabaseProvider
|
||||
import androidx.media3.datasource.DataSource
|
||||
import androidx.media3.datasource.HttpDataSource
|
||||
import androidx.media3.datasource.cache.CacheDataSource
|
||||
import androidx.media3.datasource.cache.LeastRecentlyUsedCacheEvictor
|
||||
import androidx.media3.datasource.cache.SimpleCache
|
||||
import java.io.File
|
||||
|
||||
object RNVSimpleCache {
|
||||
// TODO: when to release? how to check if cache is released?
|
||||
private var simpleCache: SimpleCache? = null
|
||||
var cacheDataSourceFactory: DataSource.Factory? = null
|
||||
|
||||
fun setSimpleCache(context: Context, cacheSize: Int, factory: HttpDataSource.Factory) {
|
||||
if (cacheDataSourceFactory != null || cacheSize == 0) return
|
||||
simpleCache = SimpleCache(
|
||||
File(context.cacheDir, "RNVCache"),
|
||||
LeastRecentlyUsedCacheEvictor(
|
||||
cacheSize.toLong() * 1024 * 1024
|
||||
),
|
||||
StandaloneDatabaseProvider(context)
|
||||
)
|
||||
cacheDataSourceFactory =
|
||||
CacheDataSource.Factory()
|
||||
.setCache(simpleCache!!)
|
||||
.setUpstreamDataSourceFactory(factory)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user