Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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 什么';处理每次加载片段时不必从Firebase加载数据的最佳方法是什么?_Android_Firebase_Firebase Realtime Database_Kotlin_Google Cloud Firestore - Fatal编程技术网

Android 什么';处理每次加载片段时不必从Firebase加载数据的最佳方法是什么?

Android 什么';处理每次加载片段时不必从Firebase加载数据的最佳方法是什么?,android,firebase,firebase-realtime-database,kotlin,google-cloud-firestore,Android,Firebase,Firebase Realtime Database,Kotlin,Google Cloud Firestore,首先,我使用的是Kotlin而不是Java,所以我希望解决方案使用Kotlin 我试图找出在片段第一次加载时从Firebase加载用户配置文件信息的最佳实践,但在后续加载时,不要查询Firebase并重新下载信息(数据持久性?)。我最初考虑使用SaveSharedReferences,但不确定这是否正确。我想我可以把这些信息存储在saveSharedPrefs和Firebase中,然后查询saveSharedPrefs是否为null。但是,我还需要检查数据的变化。从逻辑上讲,如果用户更新了他们的

首先,我使用的是Kotlin而不是Java,所以我希望解决方案使用Kotlin

我试图找出在片段第一次加载时从Firebase加载用户配置文件信息的最佳实践,但在后续加载时,不要查询Firebase并重新下载信息(数据持久性?)。我最初考虑使用SaveSharedReferences,但不确定这是否正确。我想我可以把这些信息存储在saveSharedPrefs和Firebase中,然后查询saveSharedPrefs是否为
null
。但是,我还需要检查数据的变化。从逻辑上讲,如果用户更新了他们的配置文件,我会更新savesharedpref以及Firebase,因此只需要检查null。我正在考虑存储用户名、照片、电子邮件、个人简历、兴趣、城市、网站和可能的1或2个以上的项目,这样就不会有太多存储的本地数据。另外,我只会存储非敏感信息

这是处理数据的最佳和最有效的方法吗?还有别的方法我没有考虑吗?我还想将此应用于应用程序的其他部分,这样,除非来自Firebase的数据与本地数据不同,否则不要从Firebase重新加载,而是从saveSharedPrefs获取数据

请帮忙提建议。另外,我还没有对SaveSharedPref做太多的工作,所以我仍在学习如何做到这一点。谢谢

*****更新*****

从Firebase获取照片:

下面是我加载用户配置文件信息的代码(只是名称和照片uri):

floatingActionButton
设置
onClickListener
,并调用
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)
    }

这些操作都是在一个片段内执行的,仅供参考。

如果您希望数据始终更新,您必须在每次重新加载片段时加载数据,但您认为用户对此不满意,这很好。我将在Android中使用SQlite,第一次加载数据并将其保存在数据库中。当我单击fragment(片段)时,我从数据库加载数据,以确保可以快速、始终地读取用户的数据,并从firebase加载数据,我检查加载完成后,将数据更新到sqlite,并重新加载数据以供查看

可能是这样的:

private loadDataFromFirebase(){
// Here load data from firebase, when load done, call bindaDataForView(data)

}

private bindDataForView(Data data){


}

我使用的是Firebase,不是SQL。Firebase使用Nosql。它不是真正的SQL,而是更像Json和SQL。但是,您不应该在每次加载片段时都加载用户信息,除非该数据发生更改(这在用户配置文件中并不常见。这不是用户感到不舒服的问题,而是应用程序速度的问题。或者,就这一点而言,您不应该在用户每次启动应用程序时都加载数据。您应该仅在信息发生变化时加载用户信息。这些数据应该在用户会话的整个过程中保持不变ess数据因某些原因而更改。SQLite要将数据保存为本地,在这里如果使用适配器,只需调用notifyDataSetChanged,我认为这是sipmple的情况。阅读更多信息:
private loadDataFromFirebase(){
// Here load data from firebase, when load done, call bindaDataForView(data)

}

private bindDataForView(Data data){


}