我有一个关于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()
}
}
这是不安全/不好的做法吗?如果是这样,为什么以及应该使用哪种模式来实现预期的结果?
谢谢, 狮子狐狸
答案 0 :(得分:1)
简短的回答:只要您的Android进程没有结束,这是安全的。
长答案:这可以归结为有关Java中单例和静态变量的生存期的讨论。这个问题已经有了一些答案,所以我在这里不再重复:
答案 1 :(得分:0)
使用意图放置附加内容或维护静态对象