我知道存储全局常量的最佳实践是什么,这些常量可以在编译时随环境(debug,preprod,prod,release等)而改变。
在iOS中,我曾经将所有全局常量保留在头文件中并使用预处理器宏进行更改,请参阅以下答案:
Where to store global constants in an iOS application?
我应该为Android使用什么解决方案?
答案 0 :(得分:21)
在基本包文件夹中创建类常量。
(或创建界面而不是类,所以有不需要每次引用该类,但由于代码可读性,这是bad practice,但它可以工作)
填写public static final
值。
此外,class
和interface
也可以声明为abstract
。
答案 1 :(得分:2)
如果常量的值取决于环境(密度,语言环境等),那么您应该使用资源来存储它们(整数,字符串,维数等)。
在另一种情况下,您可以将全局常量放在一个文件中(最佳实践 - 为每组常量使用前缀)或将局部常量放在相关的类中(例如,Intent包含标志。附加,类别等)。
答案 2 :(得分:2)
使用public static final values.
并将它们保存在单独的java文件中,如下所示:
static String QC = "http:/************";
static String DEV = "http:/************";
static String CLOUD = "http:/************";
static String SERVICEURL = CLOUD ; //Use this SERVICEURL in your code at run time
答案 3 :(得分:2)
另一种解决方案可能是使用资源文件(如果您满足于只存储字符串值)。
这可用于存储常量,例如此应用程序管理的帐户:
实施例。 WelcomeActivity.java
AccountManager am = AccountManager.get(WelcomeActivity.this);
Account account = am.getAccountsByType(getResources().getString(R.string.ACCOUNT_TYPE))[0];
实施例。 RES /值/ strings.xml中
<resources>
<string name="ACCOUNT_NAME">com.acme.MyAccountSignature</string>
</resources>
这也允许您在不需要重新编译的情况下修改它(类似于通常解耦翻译的方式,最好使用strings.xml文件)。
答案 4 :(得分:0)
属性文件
我们将属性文件存储在<project>/<package>/src/main/assets/config.properties
加载属性
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);
答案 5 :(得分:0)
**非常简单的解决方案在这里**
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";
}
快乐的编码