Where to store global constants in an Android application?
我知道存储全局常量的最佳实践是什么,这些常量可以在编译时随环境(调试、预处理、生产、发布等)而更改。
在iOS中,我将所有全局常量保存在头文件中,并使用预处理器宏更改它。请参阅以下答案:
在iOS应用程序中存储全局常量的位置?
我应该为Android使用什么解决方案?
在基本包文件夹中创建一个类常量。
(或者创建一个接口而不是类,这样就不需要每次都引用该类,但是由于代码可读性,这是一种糟糕的做法,但它会起作用)
用
此外,
另一种解决方案可能是使用资源文件(如果您满足于只存储字符串值)。
这可用于存储常量,如此应用程序管理的帐户:
例如welcomeactivity.java
1 2 | AccountManager am = AccountManager.get(WelcomeActivity.this); Account account = am.getAccountsByType(getResources().getString(R.string.ACCOUNT_TYPE))[0]; |
号
例如res/values/strings.xml
1 2 3 | <resources> <string name="ACCOUNT_NAME">com.acme.MyAccountSignature</string> </resources> |
这还允许您在不需要重新编译的情况下修改它(类似于您通常如何分离翻译,strings.xml文件最适合用于此转换)。
使用EDCOX1×4,并将它们保持在单独的Java文件中:
1 2 3 4 5 6 |
如果常量的值取决于环境(密度、区域设置等),那么应该使用资源来存储它们(整数、字符串、dimen等)。
在另一种情况下,您可以将全局常量放在一个文件中(最佳实践-对每一组常量使用前缀),或者将本地常量放在相关类中(例如,intent holds标志)。附加项、类别等)。
**这里有非常简单的解决方案**
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | public class Constants { /** * Object key prams when pass the json object from server. */ public static final String KEY_EMAIL ="email"; public static final String KEY_PASSWORD ="password"; public static final String KEY_DEVICE_TOKEN ="device_token"; public static final String KEY_DEVICE_TYPE ="device_type"; public static final String KEY_NAME ="name"; public static final String KEY_COUNTRY_CODE ="country_code"; public static final String KEY_PHONE_CODE ="phone-code"; public static final String KEY_GENDER ="gender"; public static final String KEY_DATE_OF_BIRTH ="date_of_birth"; public static final String KEY_USER_ID ="user_id"; public static final String KEY_LIMIT ="limit"; public static final String KEY_DRIVER_ID ="driver_id"; public static final String KEY_LONGTITUDE ="logitude"; public static final String KEY_LATTITUDE ="lattitude"; public static final String KEY_RATING ="rating"; public static final String KEY_DETAILS ="details"; public static final String KEY_ACCESS_TOKEN="access_token"; /** * Fragments name */ public static final String FRAG_ETA ="ETA"; public static final String FRAG_ACCOUNT_FRAGMENT ="ACCOUNT_FRAGMENT"; public static final String FRAG_SETTING_FRAGMENT ="SETTING_FRAGMENT"; public static final String FRAG_MAP_FRAGMENT ="MAP_FRAGMENT"; public static final String FRAG_FEEDBACK ="FEEDBACK"; public static final String FRAG_RATE_FRAGMENT ="RATE_FRAGMENT"; public static final String USA_CODE ="+1"; public static final String DISTANCE_SEARCH ="DISTANCE_SEARCH"; } |
快乐编码
文件属性
我们在
正在加载属性
1 2 3 4 5 6 7 8 9 | private static final String PROPS_NAME ="config.properties"; private static Properties configuration; ... public static void init(Context ctx) { configuration = new Properties(); InputStream rawResource = resources.getAssets().open(PROPS_NAME); configuration.load(rawResource); |
。