Roy*_*son 2 singleton android android-context kotlin
我正在尝试实现以下单例模式: SingletonClass.getInstance(context).callMethod()
虽然有很多教程可以解释如何在Kotlin中制作单例,但它们都没有解决context在静态字段中持有一个会导致Android内存泄漏的事实.
如何在不创建内存泄漏的情况下创建上述模式?
更新:
这是我对CommonsWare解决方案#2的实现.我用过Koin.
单身人士课程:
class NetworkUtils(val context: Context) {
}
Run Code Online (Sandbox Code Playgroud)
申请类别:
class MyApplication : Application() {
val appModule = module {
single { NetworkUtils(androidContext()) }
}
override fun onCreate() {
super.onCreate()
startKoin(this, listOf(appModule))
}
}
Run Code Online (Sandbox Code Playgroud)
活动类:
class MainActivity : AppCompatActivity() {
val networkUtils : NetworkUtils by inject()
}
Run Code Online (Sandbox Code Playgroud)
选项#1:getInstance(Context)打电话applicationContext给提供Context并保持.在Application你的进程和生活的过程的生活产生单.它是预先泄露的; 你不能进一步泄漏它.
选项#2:摆脱getInstance()并设置某种形式的依赖注入(Dagger 2,Koin等).这些DI框架有一些配方可以让它们Application为它们创建和注入下游的单体提供单例.
| 归档时间: |
|
| 查看次数: |
963 次 |
| 最近记录: |