内存泄漏时的android MVP模式

时间:2018-12-30 15:43:38

标签: android kotlin android-mvp

当前,我正在使用带有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,弱引用将用于避免内存泄漏。这里是否一样?如果确实会导致内存泄漏,除了弱引用之外,还有其他方法可以解决它。

1 个答案:

答案 0 :(得分:0)

您可以创建方法attachdetach。在attach中,您可以初始化某些内容,在detach中,您可以完成某些内容。例如,您可以在活动方法接口变量和活动方法之前的所有回调中设置null,然后检查是否不为空。

带有AsyncTask的情况与您的情况不同。使用AsyncTask时,我们在View或Activity链接内部进行了传递,这意味着在旋转以前的活动/视图后销毁了,但是异步任务具有旧链接并且GC无法清除内存。