【问题标题】:Best way to keep constants in android [closed]在android中保持常量的最佳方法[关闭]
【发布时间】:2015-12-26 10:56:18
【问题描述】:

在 android 中存储要在 java 类中使用的常量的最佳方式是什么。 据我所知有两种方法:

  1. res/strings
  2. 创建界面

从我了解到的情况来看,我认为创建界面并不是一种安全的做法。我不确定 res/strings 是否安全。有人可以告诉我哪种方法可以安全且简单地将应用程序常量安全地放入 android 中,以供同一应用程序中的其他 java 类使用。

【问题讨论】:

  • 如果它只被一个类使用,我使用'public static final String EXAMPLE = "foo"',否则我将它们放在strings.xml中
  • “安全”是什么意思?
  • 两者都不是。 res/strings 用于本地化,您需要一个上下文来访问这些值,而这并不总是可用的。
  • 最好的方法是以某种方式声明一个常量,然后继续你的程序。
  • BuildConfig 怎么样?摇篮?

标签: java android constants


【解决方案1】:

我创建一个包 utils 并添加一个 Constant 类,如下所示:

package utils;

public class Constant {

    public static final String API_KEY = "yourApikey";
    public static final int INT_ID = 0;
    //And more...

}

然后,您可以从其他类和包中调用此属性:

int int_id = Constant.INT_ID;

回应 Suni 的评论。在不使用 static 关键字的情况下使用常量的一种方法是定义属性在接口内,然后在类中实现该接口你想使用这些属性:

public interface Constant{
    String API_KEY = "yourApiKey";
    int INT_ID = 0;
}

然后,在你的课堂上:

public class YourClass implements Constant{

    int int_id = INT_ID;

}

问候!

【讨论】:

  • 还有.. 为什么这是一件好事?
  • 有没有什么方法可以在不使用static关键字的情况下以常量声明字符串并在其他类中使用?
【解决方案2】:

如果它们确实是您设置一次的常量,并且在构建之间可能会有所不同,例如Api Urls 之类的,你应该使用BuildConfig

您可以在 build.gradle 中添加:

buildTypes {
    debug {
        buildConfigField "String", "GCM_PROJECT_KEY", "\"1234567890\""
    }
}

这将在your.package.BuildConfig 中生成一个public final String GCM_PROJECT_KEY,您可以使用它。此类也应在您使用应用程序 ID、版本或版本名称的任何地方使用。

此外,这也是使用多种口味时要走的路。您只需要将常量从 buildTypes 移动到风味。

【讨论】:

    猜你喜欢
    • 2016-02-27
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多