android - 在移动应用程序中加载元数据的最佳策略是什么?
问题描述
我的 Android 应用需要从我的后端服务器调用一些元数据,例如配置值、类别、图像描述等。数据不会经常更改,但有时我需要向主数据添加值并需要应用程序来获取它(但即便如此,时间也不是那么关键)。
这种情况的最佳实践是什么?每次需要时加载数据似乎有点矫枉过正。我应该在应用程序启动并使用缓存时加载它吗?更多选择?
如果这有助于找到解决方案,我正在使用改造 2。
解决方案
就我而言,我使用 SharedPreferences (key - value) 来保存用户信息,例如安全令牌和用户数据。但是,如果您需要保存一些静态数据,例如 api url、api 密钥以在您的应用程序中使用某些服务,您可以在 build.gradle 中使用 resValues(您放置依赖项的位置)。
sharedPreferences 示例:
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0);
Editor editor = pref.edit();
editor.putString("key_name", "string value"); // Storing string
val content = pref.getString("key_name", null); // getting String
在 gradle 中保存静态数据的示例:
buildTypes {
debug {
resValue "string", "url_api", "http://test.api.org/"
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
resValue "string", "url_api", "https://production.api.org/"
}
}
当我需要使用改造来调用这个 url 时,我使用这行代码:
val example = Retrofit.Builder()
.client(okHttpClient)
.baseUrl(application.getString(R.string.url_api)) // using resvalue from gradle
.addCallAdapterFactory(CoroutineCallAdapterFactory())
.build()
.create(ApropoApi::class.java)
对于开发,我可以使用调试 resvalue,并在发布我的应用程序后使用释放 resvalue。
根据您的业务逻辑,您必须决定使用什么。
推荐阅读
- cygwin - Cygwin FIFO 与本机 Linux FIFO - 阻塞行为的差异?
- php - PHP将多维数组添加在一起
- java - JUnit 测试中的 System.setProperty
- r - 为什么 arm::sim 与 merTools::predictInterval 预测的一致置信区间不同?
- swift - 尝试发送数据以查看时的映射问题
- android - MaterialCardView 内的子视图缩小和消失
- python - 声明静态值时,Class 中的 NameError 是它自己的控制器
- bash - Bash如何检查变量是否在范围内
- javascript - 在Javascript中,如果还有其他文本,如何评估表达式
- java - 如果我们知道它的一个变量或参数,如何访问对象?