정적 클래스, 인터페이스 또는 xml 리소스 중에서 안드로이드에서 상수를 정의하는 가장 좋은 방법은 무엇입니까?
저는 웹 서비스를 이용하여 서버에서 데이터를 가져오는 안드로이드 어플리케이션을 개발하고 있습니다. 포인트 개발 시스템, 테스트 서버, 라이브 서버까지 3개의 다른 URL을 가지고 있습니다.테스트/라이브를 위한 어플리케이션을 주고 싶을 때마다 URL을 변경하는 것이 어렵기 때문에, 빌드 타입 설정 상수를 기반으로 적절한 URL을 얻을 수 있도록 구성 가능하게 하려고 계획하였습니다.
- java static class 또는 java public interface 또는 xml resource file 중 어느 것이 이 상수를 유지하는 가장 좋은 방법입니까?언제? 왜?
- 어떤 것이 더 나은 성능을 제공합니까?언제? 왜?
Ex: 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>
자바 정적 상수
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"};
}
XML 레이아웃에서 프로젝트 리소스를 참조할 수 있다는 점에서 둘 사이에는 큰 차이가 있습니다.애플리케이션 컨텍스트에서 사용할 수 있으므로 글로벌 애플리케이션 전체에서 액세스할 수 있습니다.프로젝트 리소스를 사용할 때 가장 큰 장점은 액세스가 용이하고 프로젝트를 크게 구성할 수 있다는 점입니다.
static final상수는 자바 바이트 코드로 컴파일되고 프로젝트 리소스는 apk 내에서 이진 형식으로 컴파일됩니다.둘 중 하나에 접근하는 것이 매우 효율적입니다...그 둘 사이에 차이가 있다면, 기껏해야 사소한 것일 뿐입니다.
프로젝트에서 리소스/상수를 어떻게 사용해야 하는지에 대한 정해진 규칙은 없습니다.즉, 개인적으로 XML이나 자바 코드에서 사용해야 할 값에 리소스를 사용합니다.반면에 제가 주로 사용하는 것은static final자바 코드에서만 사용되며 구현에 고유한 값의 상수입니다.
또한 장치의 현재 구성(예: 화면 크기, 로케일 등)에 따라 런타임에 XML 리소스를 로드할 수 있습니다.따라서 XML로 상수를 선언할지 또는 직접 선언할지 여부를 결정할 때 이를 고려해야 합니다..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
일반적인 경우:
- XML 값은 자바 파일의 상수보다 레이아웃 파일 및 매니페스트 파일의 접근성이 우수합니다.
- XML 값은 자바 파일의 상수보다 여러 언어를 지원할 수 있는 장점이 있습니다.
앱 코드에서 UI 문자열을 추출하여 외부 파일에 보관하는 것이 항상 좋은 방법입니다.Android는 각 Android 프로젝트의 리소스 디렉토리로 이를 쉽게 만듭니다.
http://developer.android.com/training/basics/supporting-devices/languages.html
저는 두 가지 방법 모두 좋을 것 같지만, 고객님의 요구에 따라 결정된다는 것이 중요합니다.
XML에 사용자의 값(웹 서비스 링크)이 있고 사용자의 값(웹 서비스 링크)에 변경이 있다고 가정하면 XML 파일에서만 쉽게 변경할 수 있습니다.
그러나 내부 클래스를 정적 변수로 사용할 경우 모든 클래스 파일에서 변경해야 합니다.
그래서 제 제안은 소스 파일에서 상수를 분리하여 리소스에 넣고 액세스하는 것입니다.
상수가 관련되거나 로케일이나 언어에 의존하거나 매니페스트에서 사용되는 경우 xml 값을 사용하는 것을 고려할 수 있습니다.
상수가 번역이나 로케일, 매니페스트에서의 사용과 관련이 없다면 xml 리소스에 넣지는 않을 것입니다.
저는 뷰 모델 안에 열거나 상수를 키로 사용해야 하는 것을 추가할 것입니다.
enum class Key{
key,rule,practice
}
아니면
const val MY_CONST = "my constant"
코틀린에서:
class Foo() {
// any other code for the class Foo
companion object {
const val MY_CONSTANT = "my constant"
}
}
이 방법은 데이터 개체에 특히 권장됩니다.
프로젝트 리소스에는 컨텍스트에 대한 액세스 권한이 필요합니다. 컨텍스트는 전달하지 않는 한 정적 메서드에서는 사용할 수 없지만 활동에서는 항상 사용할 수 있습니다. 즉, 리소스와 레이아웃 사이에 우선적인 연결이 있는 것 같습니다.
정적인 방법으로 처리할 수 있는 앱 변수와 상수의 경우, 추상 클래스를 만들고 다른 모든 프로젝트 클래스 파일에서 (이 상수 클래스의) 정적 가져오기를 수행합니다.
언급URL : https://stackoverflow.com/questions/11150701/which-is-best-way-to-define-constants-in-android-either-static-class-interface
'codememo' 카테고리의 다른 글
| 선택2에서 AJAX로 태그 지정 (0) | 2023.10.20 |
|---|---|
| JSR 303 Bean Validation + 자바스크립트 클라이언트측 Validation (0) | 2023.10.20 |
| 각도 2 구성 요소 생성기 대 OnInit (0) | 2023.10.20 |
| OSGI를 시작하는 가장 좋은 방법은 무엇입니까? (0) | 2023.10.20 |
| jenkins에서 npm/grunt 명령을 실행하는 방법 (0) | 2023.10.20 |