Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在应用程序类中创建单例是否会导致内存泄漏?_Android_Kotlin_Singleton_Android Context - Fatal编程技术网

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。我使用的是伴生对象而不是静态方法。关于你的第一个问题,我编辑了我的答案。对于第二条评论,它们背后的主要概念是相似的,引用应该被跟踪,这样当它们被破坏时就不会被访问。