android 关于内存泄漏的 MVP 模式

android MVP pattern on memory leak

目前我在 android 上使用 MVP 模式与合同。 所以在示例中我的交互器是这样的:

interface MainInteractor {
    interface Activity {
        //function here
    }

    interface Presenter {
        //function here
    }
}

我的 Presenter class 包含这样的内容

class MainPresenter(
    var activity : MainInteractor.Activity
) : MainInteractor.Presenter {

    //interface function that calls API (async)
    fun callNetwork() {
        //code here 
    }
}

从某种意义上说,我想知道如果调用网络尚未完成但 activity 已经被破坏,这种模式是否会导致内存泄漏。我知道对于 AsyncTask,将使用弱引用来避免内存泄漏。这里也是一样吗?如果它确实导致内存泄漏,除了弱引用之外还有什么方法可以修复它。

您可以创建方法 attachdetach。在附加中你可以初始化一些东西,在分离中你可以完成一些东西。例如,您可以将 null 设置为您的 activity 合同接口变量,并在调用方法检查是否不为 null 之前在所有回调中设置。

AsyncTask 的案例与您的案例不相似。使用 AsyncTask 我们在 View 或 Activity link 内部传递,这意味着在旋转之前的 activity/view 被销毁之后,但是异步任务有旧的 link 并且 GC 无法清除内存。