这是定义在Android的常量最好的方法,无论是静态类,接口或XML资源?(Which is bes

2019-06-25 16:21发布

我正在开发,它使用Web服务从服务器获取数据的Android应用程序,为我有三个不同的组URL指向开发系统,测试服务器和现场服务器。 这是很难改变的URL,每当我想给应用程序进行测试/实况。 所以我计划让它作为配置的,因此应用程序可以获得基于我适当的URL生成类型配置不变。 所以,

  • 这是保持这个常量的最佳方式,Java静态类或Java公共接口或XML资源文件? 什么时候? 为什么?
  • 它提供了更好的性能? 什么时候? 为什么?

例如:XML资源

<integer name="config_build_type">0</integer>
<string-array name="url_authentication">
    <item >http://development.com/xxxx</item>
    <item >http://test.com/xxx</item>
    <item >http://example.com/xxx</item>
</string-array>

Java静态常量

public class Config {
    public static final int BUILD_TYPE = 0; // 0 - development, 1 - test, 2 - live
    public static final String[] URL_AUTHENTICATION = {"http://development.com/", "http://test.com/", "http://example.com"};
}

Answer 1:

有两个在你可以在你的XML布局中引用的项目资源之间有很大的区别。 他们是在应用程序上下文中可用,因此在整个全球的应用程序访问。 利用项目资源的最大的优点是易于访问的,他们让你显著组织项目。

static final常数被编译成Java字节码; 项目资源被编译成APK中的二进制格式。 访问要么是非常有效的...如果在这两个之间的差异,实在是小巫见大巫最多。

没有你应如何使用资源/常量在项目中设置的规则。 这就是说,我个人使用的资源,我可能需要我的XML Java代码中使用的值。 在另一方面,我通常使用static final只能由我的Java代码,并使用特定于我的实现值的常量。

还要注意,有可能在运行时根据设备的当前配置(即屏幕尺寸,地点等)中装载XML资源。 所以,你应该在决定是否应声明XML或直接定在时考虑到这一点.java文件。



Answer 2:

对于谁希望看到我们如何使用一个类来定义我们的常量和调用任何我们需要的人。

Constant.java

    package org.nrum.nrum;

/**
 * Created by rajdhami on 5/23/2017.
 */
public class Constant {
    public static final String SERVER = "http://192.168.0.100/bs.dev/nrum";
//    public static final String SERVER = "http://192.168.100.2/bs.dev/nrum";
    public static final String API_END = SERVER + "/dataProvider";
    public static final String NEWS_API = API_END + "/newsApi";
    public static final String BANNER_API = API_END + "/bannerApi/lists";
    public static final String NOTICE_API = API_END + "/noticeApi/lists";
    public static final String UPLOAD_PATH = SERVER + "/uploads";
    public static final String UPLOAD_PATH_BANNER = UPLOAD_PATH + "/company_1/banner";
    public static final String UPLOAD_PATH_NEWS = UPLOAD_PATH + "/company_1/news";
    public static final int BANNER_TRANSITION_DURATION = 5000;
    public static final int NOTICE_BUTTON_BLINK_DURATION = 5000;
    public static final int BANNER_FETCH_LIMIT = 3;
}

现在我们可以使用上面下面的方式常量。

Constant.NOTICE_BUTTON_BLINK_DURATION


Answer 3:

在一般情况下:

  • XML值的java文件在布局文件和清单文件accessbilty的优势常量
  • XML值的java文件中有对多语言的支持优势常量


Answer 4:

它总是一个很好的做法,从您的应用程序代码中提取UI串并保存在一个外部文件。 Android的让一切变得简单,在每个Android项目一个资源目录。

http://developer.android.com/training/basics/supporting-devices/languages.html



Answer 5:

我认为这两个办法似乎是不错,但事情是,它取决于你的需求。

如果你在你的XML有你的价值观(网络服务的链接),并假设有在你的价值观的任何变化(网络服务链接),你可以很容易地只在XML文件中改变。

但是如果你使用的内部类的静态变量,你必须在所有类文件来改变。

所以我的建议是,从源文件中分离常数和投入的资源和访问它..



Answer 6:

我不认为这将多大关系的表现,说实话。 它主要归结为偏好(我更喜欢使用代码的静态变量)。

这也许是性能更好的方式来做到这一点,因为他们没有做的是从XML读取,但没有办法,这将是一个明显的区别。 我再说一遍,你不会注意到其中的差别。



Answer 7:

我很高兴有人问这个......加一!

项目资源需要访问上下文,这是不是在静态方法可用的(除非你通过它的等),但总是在活动可用 - 似乎有资源和布局之间的优先连接。 对于应用程序变量和常量可以在静态方法来处理我创建一个抽象类,做所有其他项目类文件的静态导入(此常量类的)。

PVS



文章来源: Which is best way to define constants in android, either static class, interface or xml resource?