当我通过后退键关闭并重新输入时,我的 Android 应用程序中遇到了一些奇怪的问题,并发现它们的发生是因为我从未重新初始化过 2 个 Singleton 类中的变量(如果手动终止应用程序,则不会发生该问题)来自任务管理器)。
即使我在主活动 onBackPressed 上显式调用 finish 并且我可以看到 onDestroy 被调用后,单例仍然在内存中。
我决定在销毁我的 Activity 之前手动清理这些单例,问题是使用 Kotlin 我需要将它们的所有成员变量设为可为空(?),并且记住为每个变量分配 null 会很麻烦,所以现在我选择像这样处理 Singleton 的实例化,并在清理时将整个实例设置为 null:
class SingletonName {
companion object {
private var _instance: SingletonName ? = null
private var instance: SingletonName ?
get() {
if (_instance == null) {
_instance = SingletonName ()
}
return _instance
}
set(value) {
_instance = value
}
@JvmStatic fun get(): SingletonName {
return instance!! //avoid having to deal with nullable value in client code …Run Code Online (Sandbox Code Playgroud)