Android 在应用程序类中创建单例是否会导致内存泄漏?
我有一个Android 在应用程序类中创建单例是否会导致内存泄漏?,android,kotlin,singleton,android-context,Android,Kotlin,Singleton,Android Context,我有一个Authenticator类,它需要一个context来执行一些使用SharedReferences的任务。我在自定义应用程序类中创建了该类的一个单例,这样我就不必每次都传递上下文来创建我的验证器的实例。这是一种正确的方法,还是会导致内存泄漏或其他问题 我的应用程序课程: 类应用程序:应用程序(){ 重写fun onCreate(){ super.onCreate() //用于伐木的植物木材 if(BuildConfig.DEBUG){ 木材.植物(木材.树木()) } Authenti
Authenticator
类,它需要一个context
来执行一些使用SharedReferences
的任务。我在自定义应用程序类中创建了该类的一个单例,这样我就不必每次都传递上下文来创建我的验证器的实例。这是一种正确的方法,还是会导致内存泄漏或其他问题
我的应用程序
课程:
类应用程序:应用程序(){
重写fun onCreate(){
super.onCreate()
//用于伐木的植物木材
if(BuildConfig.DEBUG){
木材.植物(木材.树木())
}
Authenticator.createInstance(此)
}
...
....
}
在其他类中,我可以像这样访问singleton:
Authenticator.INSTANCE
当对象如上下文
,活动
,应用程序
。。。具有生命周期的对象存储为静态对象或静态对象。在生命周期结束时,应注意清除这些对象。如果这样做,存储它们应该不会有任何问题。当
生命周期结束
如需进一步说明,活动的生命周期以onDestroy
结束,您应该覆盖此函数并正确释放对它的访问。有关更多详细信息,请访问android生命周期文档。
对于应用程序终止之类的情况,应用程序使用的所有内存都将被清理,不会发生泄漏,因此您不必担心在应用程序
类中的访问,比如保存全局应用程序上下文 谢谢你的回答。但是应用程序类的生命周期什么时候结束?因为我正在使用Kotlin。我使用的是伴生对象而不是静态方法。关于你的第一个问题,我编辑了我的答案。对于第二条评论,它们背后的主要概念是相似的,引用应该被跟踪,这样当它们被破坏时就不会被访问。