减少强引用,使用一个弱引用来指代一个对象,当我们真正需要访问这个对象的时候才将其转换成实际的对象
class SafeHandler<T>(`object`: T) : Handler() {
private val innerObject: WeakReference<T>?
fun getInnerObject(): T? {
return innerObject?.get()
}
override fun handleMessage(msg: Message) {
if (getInnerObject() == null) return
super.handleMessage(msg)
}
init {
innerObject = WeakReference(`object`)
}
}