当前,我正在使用带有Contract的android上的MVP模式。 因此,在示例中,我的交互器是这样的:
interface MainInteractor {
interface Activity {
//function here
}
interface Presenter {
//function here
}
}
我的Presenter类包含这样的内容
class MainPresenter(
var activity : MainInteractor.Activity
) : MainInteractor.Presenter {
//interface function that calls API (async)
fun callNetwork() {
//code here
}
}
从某种意义上说,我想知道如果调用网络尚未完成但活动已被破坏,则这种模式是否会导致内存泄漏。我知道对于AsyncTask,弱引用将用于避免内存泄漏。这里是否一样?如果确实会导致内存泄漏,除了弱引用之外,还有其他方法可以解决它。
答案 0 :(得分:0)
您可以创建方法attach
和detach
。在attach中,您可以初始化某些内容,在detach中,您可以完成某些内容。例如,您可以在活动方法接口变量和活动方法之前的所有回调中设置null,然后检查是否不为空。
带有AsyncTask的情况与您的情况不同。使用AsyncTask时,我们在View或Activity链接内部进行了传递,这意味着在旋转以前的活动/视图后销毁了,但是异步任务具有旧链接并且GC无法清除内存。