热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

KotlinAndroid-创建使用上下文而没有内存泄漏的单例

如何解决《KotlinAndroid-创建使用上下文而没有内存泄漏的单例》经验,为你挑选了1个好方法。

我正在尝试实现以下单例模式: SingletonClass.getInstance(context).callMethod()

虽然有很多教程可以解释如何在Kotlin中制作单例,但它们都没有解决context在静态字段中持有一个会导致Android内存泄漏的事实.

如何在不创建内存泄漏的情况下创建上述模式?

更新:

这是我对CommonsWare解决方案#2的实现.我用过Koin.

单身人士课程:

class  NetworkUtils(val context: Context) {

}

申请类别:

class MyApplication : Application() {

    val appModule = module {
        single { NetworkUtils(androidContext()) }
    }

    override fun onCreate() {
        super.onCreate()
        startKoin(this, listOf(appModule))
    }
}

活动类:

class MainActivity : AppCompatActivity() {

    val networkUtils : NetworkUtils by inject()

}

CommonsWare.. 8

选项#1:getInstance(Context)打电话applicationContext给提供Context并保持.在Application你的进程和生活的过程的生活产生单.它是预先泄露的; 你不能进一步泄漏它.

选项#2:摆脱getInstance()并设置某种形式的依赖注入(Dagger 2,Koin等).这些DI框架有一些配方可以让它们Application为它们创建和注入下游的单体提供单例.



1> CommonsWare..:

选项#1:getInstance(Context)打电话applicationContext给提供Context并保持.在Application你的进程和生活的过程的生活产生单.它是预先泄露的; 你不能进一步泄漏它.

选项#2:摆脱getInstance()并设置某种形式的依赖注入(Dagger 2,Koin等).这些DI框架有一些配方可以让它们Application为它们创建和注入下游的单体提供单例.


推荐阅读
author-avatar
篱边_水祭
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有