Безопасно ли хранить данные в объекте kotlin? - PullRequest
0 голосов
/ 08 мая 2019

У меня есть вопрос об объектах в Котлине, на который я до сих пор не нашел удовлетворительного ответа.Это в основном следующий сценарий: у меня есть некоторые пользовательские данные, которые я хочу сделать доступными через все приложение, без необходимости передавать их через действия.

Чтобы достичь этого, я создал объект с двумя свойствамикоторые создаются с данными пользователя в процессе запуска.Это безопасный способ сохранить и сделать данные пользователя доступными для всех действий или они будут потеряны в пути?

Пример:

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

Ответы [ 2 ]

1 голос
/ 08 мая 2019

Краткий ответ: это безопасно, пока ваш процесс Android не заканчивается.

Длинный ответ: это сводится к обсуждению времени жизни синглетонов и статических переменных в Java.На этот вопрос уже было несколько ответов, поэтому я не буду повторять их здесь:

0 голосов
/ 08 мая 2019

использовать намерение ставить дополнения или поддерживать статический объект

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...