当我需要在简单的浏览器中打开链接时,我有两个选项来使用应用程序的链接。
而是将其保存在strings.xml
文件中
<string name="link_openBrowser_calendar" translatable="false">/schedule/</string>
看起来很难看,或者只是将它作为
保存在Constants.java文件中final static final String linkSchedule = "/schedule/";
在某些情况下,我有很多这样的链接,需要额外的参数
<string name="link_openBrowser_account_byId" translatable="false">
/accounts/account/?id=%1$s
</string>
甚至更多参数
<string name="view_meeting_time_inOneDay_period">%1$s at \n%2$s – %3$s</string>
当需要翻译部分字符串时很有用,但在代码中它看起来非常庞大且难以阅读。
String time = mEvent.isAllDay() ? getString(R.string.view_meeting_time_inOneDay_allDay, isTodayStr)
: getString(R.string.view_meeting_time_inOneDay_period, isTodayStr, startStr, finishStr);
这些方法中的哪一种在可扩展性,性能或仅仅是清晰度方面更有效率?我相信在某些方面,存储这些链接的地方很重要,虽然它们并不是一直使用而只需要“随时随地”,而是将内存存储为static
。
答案 0 :(得分:0)
如果您的应用程序需要具有可选文本样式和格式的文本字符串,strings.xml
很方便。例如,您可以使用它将字符串翻译成其他语言。 Android会查看用户首选项并从正确的本地化文件夹中选择strings.xml
文件(values
是基本文件,values-xx
代表其他语言)。另一方面,您应该为需要在全局范围中使用的其他字符串使用单独的类(例如,Constants.java
)。在Constants.java
中定义那种常量字符串是最佳做法。
答案 1 :(得分:0)
我发现在.gradle
文件中存储代表API或服务器链接的链接的资源字符串要好得多。这里的想法是在开发阶段我们想要使用 debug / dev API链接测试我们的API或其他任何东西,所以在.gradle
文件中设置它我们可以为每个创建不同的字符串构建类型。
android {
...
buildTypes {
release {
buildConfigField("String", "API_URL", "\"https://api.release\"")
// These values are defined only for the release build, which
// is typically used for full builds and continuous builds.
buildConfigField("String", "BUILD_TIME", "\"${minutesSinceEpoch}\"")
resValue("string", "build_time", "${minutesSinceEpoch}")
...
}
debug {
buildConfigField("String", "API_URL", "\"https://api.debug\"")
// Use static values for incremental builds to ensure that
// resource files and BuildConfig aren't rebuilt with each run.
// If they were dynamic, they would prevent certain benefits of
// Instant Run as well as Gradle UP-TO-DATE checks.
buildConfigField("String", "BUILD_TIME", "\"0\"")
resValue("string", "build_time", "0")
}
}
}
...