오랜만에 포스팅하는 것 같다. 공부하면서 블로그보다 깃헙에 정리하다보니 블로그가 소홀했던 것 같다. 내 자신을 반성해야지…

아무튼, 오늘은 가벼운 내용을 정리하려고 한다. [안드로이드에서 문자열을 관리하는 방법]이다. 이 방법이 정답은 아니며, 모든 곳에서 통용되고 있는 건지도 모르겠다. 다만, 이렇게 관리하는 개발자가 많다는 건 사실인 것 같다.

String Resource 관리

사실, String을 관리하는 가장 쉬운 방법은 필요한 파일에서 정의해서 쓰는 것이다. 예를 들어, MainActivity에서 "이름"이라는 String이 필요하다면 해당 파일에서 정의하여 사용하면 된다. 그리고 xml에서 TextView에 text가 필요하다면 “text” 처럼 작성해도 된다.

하지만, 단기적으로 봤을 때는 이게 편하지만 장기적으로 보면 굉장히 불편한 작업이다. 화면이 많아지면서 "이름"이 필요한 곳이 많아질 수 있다. 그렇다면 필요한 파일마다 정의하는 건 번거로운 작업이다. 또한, 다국어 서비스를 지원한다면 더 번거로운 작업이 된다.

그렇다면 한 곳에서 관리하고 이를 사용하면 번거로운 작업을 벗어날 수 있을 것 같다는 생각이 든다. 역시나 안드로이드는 이러한 작업을 지원해준다.

  • res/values 밑에 strings.xml 파일이 있다. 이 곳에 "이름"을 저장하고 필요한 곳에서 불러와 사용한다.
  • Code 상에서는 context.getString(R.string.XXX)와 같은 방식으로 접근한다.
  • XML에서는 @string/name과 같은 방식으로 접근한다.

이를 통해 문자열을 한 곳에서 관리할 수 있게 된다. 따라서 번거로움이 줄어들고 문자열 관리의 통일성을 유지할 수 있게 되었다. 또한, 다국어 서비스를 지원할 때도 이전보다 번거로움이 줄어들었다는 장점이 존재한다.

추가적으로 string-array도 정의할 수 있어 로컬에서 필요한 문자열 배열이 있고, 이 배열의 값이 추가되거나 수정될 수 있으며 관리의 통일성을 유지하고 싶다면 strings.xml 파일에 저장하여 사용하는 것이 좋다고 생각한다.

이 방법이 강제되는 방법은 아니지만, 개발하면서 효율성을 조금은 향상시켜 줄 것이라고 생각한다. 이렇게 관리하지 않았다면 이 글을 보고 앞으로 효율적인 문자열 관리를 하기 바라고, 이런 방식으로 관리했다면 멋지다고 말하고 싶다.

Reference