2013-05-08 2 views
17

언제든지 응용 프로그램을 만들 때마다 문자열 리소스를 XML에서 참조하는 대신 문자열을 항상 하드 코딩합니다. 응용 프로그램은 잘 작동하지만, 내가 @string 자원을 사용하여 경고를 제공문자열의 하드 코딩이 성능에 영향을 줍니까?

예 버튼 :

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="click here" /> 

내 질문은 내가 할 경우 내 응용 프로그램의 성능에 영향을 미칠 것인지 그래서 나 (@string 자원) 단지 국제화를 위해 사용된다 .

+22

하드 코딩을하면 개발자의 성능이 저하 될 수 있습니다. ;) – AlbeyAmakiir

답변

40

현지화에 도움이되는 Android 색조 경고입니다.

기술적으로 하드 코딩 문자열은 매번 R int에서 문자열을 검색 할 필요가 없으므로 앱 성능이 약간 향상됩니다. 그러나이 성능 차이는 무시할 수 없으며 사람이이를 인식 할 수는 없습니다.

그러나 항상 문자열 리소스를 값 폴더에 보관하면 매우 간단합니다.

+1

글쎄. +1 - –

+0

+1 차이는 밀리 초가 될 수 있습니다 ?? – Raghunandan

+1

@Raghunandan 예. 아마도 10-100 밀리 초의 범위 일 것입니다. –

4

하드 코드 된 문자열을 사용하여 성능이 저하 될 이유가 없습니다. 하드 코딩 된 문자열과 관련된 단계가 적습니다. 그러나 응용 프로그램과 UI 코드에서 리소스 문자열을 분리하는 것이 가장 좋습니다.

4

성능 문제가 발생하지 않습니다. 그러나 strings.xml에서 문자열을 정의하는 것은 유지 보수 및 lolalization의 용이성을 위해 권장됩니다. 예를 들어 아래 두 시나리오를 고려하십시오.

당신이 많은 장소에서 사용되는 문자열을 변경해야하는 시나리오 1. 귀하의 경우 모든 레이아웃에서 "click here"을 모두 변경해야합니다. 그러나 strings.xml에서 선언하면 xml에서 변경된 내용 만이 모두 변경됩니다.

또 다른 예를 들어 시나리오 2

당신이 다른 로케일에 대해 서로 다른 언어를 표시하려는 경우 다음 당신은 string.xml을 사용해야합니다.

0

앱이 Localization을 지원하지 않습니다. 앱의 요구 사항이 아닌 경우 하드 코딩 된 문자열을 사용하는 데 문제가 없습니다.

1

문자열을 하드 코딩하면 프로그램이 느리게 실행됩니다. R.java 클래스의 String을 조회 할 필요가 없으므로 실제로 성능이 향상됩니다.

1 현지화 2- 여러 장소에서 같은 문자열을 사용하고있는 모든 곳에서 동일하게 편집하고 싶은 경우는 당신에게 저장 -이 : strings.xml에서 문자열을 참조하면 모범 사례로 인해 2 가지 이유가있다 모든 하드 코딩 된 문자열을 개별적으로 편집하는 오버 헤드.

1

하드 코딩 문자열은 성능에 직접적인 영향을 미치지 않습니다. 그것은 유지 보수성에 영향을 미친다.

문자열을 하드 코드 할 때 문자열을 "클릭하십시오"를 "추가"또는 다른 것으로 변경하려면 전체 프로젝트를 검색하여 문자열을 어디에서든지 변경해야합니다 사용. strings.xml을 항상 따르는 것이 좋습니다. :)

4

다른 사람들이 말했듯이, 현지화 용으로는 이지만 성능면에서 볼 때 초당 몇 번이나 조회했는지에 따라 달라집니다. 응용 프로그램이 시작될 때 느려지고 스택 샘플링에서 문자열의 리소스 조회에 50 %의 시간이 소요되는 것으로 나타났습니다. 문자열을 찾은 이유는 스플래시 화면에 표시하는 것이 었습니다 앱을 시작하는 동안 사용자가 볼 수있는 것을 제공합니다!

관련 문제