android中定义常量的类,哪个是在android中定义常量的最佳方法,静态类,接口或xml资源?...
哪个是在android中定义常量的最佳方法,静态类,接口或xml资源?我正在开发一个使用Web服务从服务器获取数据的Android应用程序,因为我有三套不同的URL来指向开发系统,测试服务器和实时服务器。 每当我想提供测试/实时应用程序时,很难更改URL。 所以我计划将其设置为可配置,以便应用程序可以根据我的构建类型配置常量获取适当的URL。所以,这是保持这个常量的最佳方法,java静态类或jav
哪个是在android中定义常量的最佳方法,静态类,接口或xml资源?
我正在开发一个使用Web服务从服务器获取数据的Android应用程序,因为我有三套不同的URL来指向开发系统,测试服务器和实时服务器。 每当我想提供测试/实时应用程序时,很难更改URL。 所以我计划将其设置为可配置,以便应用程序可以根据我的构建类型配置常量获取适当的URL。所以,
这是保持这个常量的最佳方法,java静态类或java公共接口或xml资源文件。 什么时候? 为什么?
哪个性能更好?,什么时候? 为什么?
例如:xml资源
0
http://development.com/xxxx
http://test.com/xxx
http://example.com/xxx
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"};
}
7个解决方案
81 votes
两者之间存在很大差异,因为您可以在XML布局中引用项目资源。 它们在应用程序上下文中可用,因此可以在全局应用程序中访问。 使用项目资源的最大优点是易于访问,并且它们允许您显着组织项目。
.java常量被编译成java字节码; 项目资源在apk中被编译成二进制格式。 访问其中任何一个都是非常有效的...如果两者之间存在差异,则最多是微不足道的。
关于如何在项目中使用资源/常量,没有一套规则。 也就是说,我个人使用资源来获取我可能需要在XML或Java代码中使用的值。 另一方面,我通常使用.java常量作为仅由我的java代码使用的值,并且特定于我的实现。
另请注意,可以在运行时加载XML资源,具体取决于设备的当前配置(即屏幕大小,区域设置等)。 因此,在决定是否应该在XML中或直接在.java文件中声明常量时,应考虑到这一点。
Alex Lockwood answered 2019-09-15T10:56:20Z
13 votes
对于那些想要了解我们如何使用Class来定义常量并调用任何我们需要的人的人。
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
Mahen answered 2019-09-15T10:56:56Z
9 votes
一般情况下:
XML值的优点是布局文件中的accessbilty和清单文件优于java文件中的常量
XML值对于Java文件中的常量的多语言支持具有优势
Dheeresh Singh answered 2019-09-15T10:57:32Z
1 votes
从应用程序代码中提取UI字符串并将其保存在外部文件中始终是一种很好的做法。 Android通过每个Android项目中的资源目录轻松实现这一目标。
[http://developer.android.com/training/basics/supporting-devices/languages.html]
Samir Mangroliya answered 2019-09-15T10:58:02Z
1 votes
我认为两种方式似乎都很好,但事情是它取决于你的要求。
如果您的XML中包含您的值(Web服务链接),并且假设您的值(Web服务链接)有任何更改,则只能在XML文件中轻松更改。
但是如果你使用内部类作为静态变量,你必须在所有类文件中进行更改。
所以我的建议是从源文件中分离出常量并放入资源并访问它。
Venky answered 2019-09-15T10:58:46Z
0 votes
老实说,我不认为这对性能有多大影响。 它主要归结为偏好(我更喜欢在代码中使用静态变量)。
它可能是性能更好的方法,因为它们不必从XML中读取,但它不会有明显的区别。 我再说一遍,你不会注意到差异。
Geobits answered 2019-09-15T10:59:16Z
0 votes
我很高兴有人问这个......还有一个!
项目资源需要访问Context,这在静态方法中是不可用的(除非您在等等中传递),但在Activity中始终可用 - 资源和布局之间似乎存在优先连接。 对于可以在静态方法中处理的app变量和常量,我创建了一个抽象类,并在所有其他项目类文件中执行静态导入(此常量类)。
PVS
PVS answered 2019-09-15T10:59:54Z
更多推荐
所有评论(0)