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

时间:2019-05-08 10:21:31

标签: android object kotlin singleton

我有一个关于kotlin中对象的问题,到目前为止,我还没有找到满意的答案。 基本上是以下情况:我有一些用户数据,这些数据可以在整个应用程序中使用,而不必通过活动传递。

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

示例:

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()
    }
}

这是不安全/不好的做法吗?如果是这样,为什么以及应该使用哪种模式来实现预期的结果?

谢谢, 狮子狐狸

2 个答案:

答案 0 :(得分:1)

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

长答案:这可以归结为有关Java中单例和静态变量的生存期的讨论。这个问题已经有了一些答案,所以我在这里不再重复:

答案 1 :(得分:0)

使用意图放置附加内容或维护静态对象