我的Android应用需要从我的后端服务器调用一些元数据,例如配置值,类别,图像描述等。数据不会经常更改,但是有时我需要向主数据中添加值,并且需要应用程序来接收它(但是,时间并不是那么关键)。
在这种情况下最佳实践是什么?每次需要时加载数据似乎有点过头了。我应该在应用启动时加载它并使用缓存吗?还有更多选择吗?
如果这有助于寻找解决方案,我正在使用改造2。
我的Android应用需要从我的后端服务器调用一些元数据,例如配置值,类别,图像描述等。数据不会经常更改,但是有时我需要向主数据中添加值,并且需要应用程序来接收它(但是,时间并不是那么关键)。
在这种情况下最佳实践是什么?每次需要时加载数据似乎有点过头了。我应该在应用启动时加载它并使用缓存吗?还有更多选择吗?
如果这有助于寻找解决方案,我正在使用改造2。
就我而言,我使用SharedPreferences(键-值)来保存用户信息,例如安全性令牌和用户数据。但是,如果您需要保存一些静态数据(例如api url,用于在应用程序中使用某些服务的api密钥),则可以在build.gradle(放置依赖项的位置)中使用resValues。
共享首选项示例:
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","https://production.api.org/"
}
}
当我需要使用改造功能调用此网址时,请使用以下代码行:
val example = Retrofit.Builder()
.client(okHttpClient)
.baseUrl(application.getString(R.string.url_api)) // using resvalue from gradle
.addCallAdapterFactory(CoroutineCallAdapterFactory())
.build()
.create(ApropoApi::class.java)
对于开发,我可以使用debug resvalue,并且在发布我的应用程序后,它会使用release resvalue。
根据您的业务逻辑,您必须决定使用什么。