【发布时间】:2020-01-16 10:13:33
【问题描述】:
我正在编写一个为多个活动缓存一些数据的类。期望是该类为每个活动执行一次初始化逻辑。但是,它也不应该导致任何内存泄漏。
如果有人可以检查此代码是否存在潜在的内存泄漏,这将很有帮助。也欢迎其他 cmets。
class AbcManager private constructor(private val data : Abc) {
fun fromAbc(a : A) : B? = data.someMethod(a)
companion object {
private val abcManagerCache : MutableList<AbcManagerCacheItem> = mutableListOf()
fun of(context : Activity) : AbcManager {
val abcManagerFromCache = attemptFromCache(context)
if(abcManagerFromCache != null) return abcManagerFromCache
val newData = //some operation that uses the context
val abcManager = AbcManager(newData)
abcManagerCache.add(AbcManagerCacheItem(
context = WeakReference(context),
abcManager = abcManager
))
return abcManager
}
private fun attemptFromCache(context : Context) : AbcManager? {
abcManagerCache.forEach {
val contextFromCache = it.context.get()
if( null!= contextFromCache && context == contextFromCache) {
return it.abcManager
}
}
return null
}
private class AbcManagerCacheItem(
val context : WeakReference<Context>,
val abcManager : AbcManager
)
}
}
【问题讨论】:
标签: android kotlin memory-leaks