Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.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 在kotlin对象中存储数据安全吗?_Android_Object_Kotlin_Singleton - Fatal编程技术网

Android 在kotlin对象中存储数据安全吗?

Android 在kotlin对象中存储数据安全吗?,android,object,kotlin,singleton,Android,Object,Kotlin,Singleton,我有一个关于科特林物体的问题,到目前为止我还没有找到满意的答案。 基本上是以下场景:我有一些用户数据,我想通过整个应用程序提供这些数据,而不必通过活动传递 为了实现这一点,我创建了一个具有两个属性的对象,这两个属性在启动活动中用用户的数据实例化。这是一种安全的方式来存储并使用户的数据可用于所有活动,还是会在途中丢失 例如: object CurrentUserManager { lateinit var userId: String, lateinit var userName:

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

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

例如:

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()
    }
}
这是不安全/不好的做法吗?如果是,为什么以及应该使用哪种模式来实现预期结果

谢谢,
lionthefox

使用intent put extras或维护静态对象

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

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


“我有一些用户数据,我想通过整个应用程序提供,而不必通过活动传递。”使用intent.putExtra()正是我想要避免的,我已经在使用静态kotlin对象,我想知道这样是否安全,所以你的回答对我没有帮助。静电是一种简单有效的方法来处理这个问题,但是安全取决于你自己。我也用这个方法。如果你想其他方法更好,就像你说的我帮不了你。请仔细阅读。。。这是Kotlin而不是Java。没有静态关键字。与java的静态等价的是伴随对象/对象hanks,这就是我需要知道的全部