Во-первых, я использую Kotlin, а не Java для этого приложения, поэтому я хотел бы, чтобы решения были в Kotlin, пожалуйста.
Я пытаюсь найти лучшие практики для загрузки информации профиля пользователя из Firebase при первой загрузке фрагмента, но при последующих загрузках не запрашивать Firebase и повторно загружать информацию (сохранение данных?). Сначала я думал об использовании saveSharedPreferences, но не уверен, что это правильный путь. Я думал, что смогу сохранить эту информацию в saveSharedPrefs, а также в Firebase, а затем запросить, если saveSharedPrefs null
или нет. Но я также должен проверить изменения данных. Логично, что если бы пользователь обновил свой профиль, я бы обновил saveSharedPrefs, а также Firebase, поэтому потребуется только проверка на нулевое значение. Я смотрю на хранение имени пользователя, фотографии, электронной почты, биографии, интересов, города, веб-сайта и, возможно, еще 1 или 2 элементов, чтобы не было много хранимых локальных данных. Кроме того, я буду хранить только конфиденциальную информацию.
Это лучший и самый эффективный способ обработки данных? Есть ли другой метод, о котором я не думаю? Я также хотел бы применить это к другим частям приложения так, чтобы, если данные из Firebase не отличались от локальных данных, не перезагружались из Firebase, получали данные из saveSharedPrefs.
Пожалуйста, помогите с предложениями. Кроме того, я еще не очень много сделал с saveSharedPrefs, поэтому я все еще учусь тому, как это делать. Спасибо!
***** ****** Update 1010 *
Получить фото с Firebase:
Вот мой код для загрузки информации профиля пользователя (только имя и фотография):
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
doAsync {
//get user profile information
if (user != null) {
uiThread {
//update UI thread after completing task
view.profileUsername.setText(user?.displayName)
view.profileProgressBar.visibility = View.GONE
if (user?.photoUrl != null) {
view.profileUserPhoto.setImageURI(user?.photoUrl)
}
}
}
}
}
установите onClickListener
для floatingActionButton
и вызовите метод chooseProfileImage
для получения изображения из локального хранилища:
view.fab_profile_photo_edit.setOnClickListener {
chooseProfileImage()
}
private fun chooseProfileImage() {
val intent = Intent()
intent.type = "image/*"
intent.action = Intent.ACTION_GET_CONTENT
startActivityForResult(Intent.createChooser(intent, "Select Picture"), profileImageRequest)
}
Все эти действия выполняются внутри фрагмента, просто к сведению.