https://medium.com/androiddevelopers/locale-changes-and-the-androidviewmodel-antipattern-84eb677660d9을 번역한 글입니다.


ViewModel은 화면회전이나 언어 변경에 의한 액티비티 재생성에서도 다시 생성되지 않고 이전 인스턴스가 그대로 남아 유지 되는 특징이 있습니다. 시스템 언어 변경을 하기전에 아래의 ViewModel코드를 보도록 하곘습니다.

이 코드의 문제는 문자열이 생성자에서만 결정된다는 것입니다. 시스템 언어변경이 발생해도 ViewModel은 재생성 되지 않죠. 그러면 문자열도 다국어 지원이 되지 않을것입니다.

이를 해결할 다른 방법은 리소스의 ID를 활용하는 것입니다. 

리소스 ID를 노출시킨뒤 액티비티가 재생성 되었을 때 View가 리소스 ID를 참조하여 올바른 국가 코드의 리소스를 참조할수 있도록 합니다. DataBinding 같은 라이브러리를 사용한다면 레이아웃에 Data가 바인딩 될때 올바른 리소스가 결정 될 수 있도록 도와줄 것입니다.

Buy me a coffeeBuy me a coffee
카테고리: AndroidJava

답글 남기기

이메일은 공개되지 않습니다.