将数据存储在 kotlin 对象中是否安全?

Is it safe to store data in a kotlin object?

我有一个关于 kotlin 中的对象的问题,到目前为止我找不到满意的答案。 它基本上是以下场景:我有一些用户数据,我想通过整个应用程序提供这些数据,而不必通过活动传递它。

为此,我创建了一个具有两个属性的对象,这些属性在启动时用用户数据实例化 activity。这是存储用户数据并使用户数据可用于所有活动的安全方式,还是会在途中丢失?

示例:

object CurrentUserManager {
    lateinit var userId: String,
    lateinit var userName: String
    }

LoginActivity {
    ...
    onCreate(...){
        val user = ApiCall.Login();
        CurrentUserManager.userId = user.id
        CurrentUserManager.userName = user.name
    }
}

MainActivity {
    ...
    onCreate(...){
        Toast.makeText(this, "Hello ${CurrentUserManager.userName} with ID: ${CurrentUserManager.userId}", Toast.LENGTH_SHORT).show()
    }
}

这是 unsafe/bad 实践吗?如果是,为什么以及我应该使用哪种模式来实现预期结果?

谢谢, 狮狐

使用 intent 放置额外内容或维护静态对象

简短回答:只要您的 Android 进程没有结束,它就是安全的。

长答案:这归结为 Java 中关于单例和静态变量生命周期的讨论。这个问题已经有了一些答案,所以我不会 re-iterate 那些:

  • Android static object lifecycle
  • Is it safe to use static class variables in an android application
  • Lifetime of a static variable in Android