본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android] 언어 변경(language change)했을 때 동작 실험

by 돼지왕 왕돼지 2019. 1. 8.
반응형

[android] 언어 변경(language change)했을 때 동작 실험


language change activity lifecycle, language change process kill, language change resource cache, language change service lifecycle, language change thread, onCreate, OnDestroy, [android] 언어 변경(language change)했을 때 동작 실험

-

실험환경 : NOS, Samsung J5


실험환경을 써 놓은 이유는 안드로이드는 OS Version 별, 제조사별, 단말별 동작이 다를 수 있기 때문.

이 실험은 대략적인 감을 잡기 위함



-

언어 변경 시 Process 가 죽는가?

죽지 않는다.



-

그럼 Application 객체는 죽는가?

Application 도 죽지 않는다.



-

그럼 Activity 는 죽는가?

Activity 는 재접근시 onDestroy -> onCreate 된다. 즉 재생성된다.



-

그럼 Activity 에서 띄운 Background Thread 는 계속 작동하는가?

계속 작동한다. 그리고 thread 내부에서 local cache 해놓은 string resource 결과값은 계속 활용된다.

local cache 를 하지 않고 Application context 를 기준으로 string resource 를 접근하면 언어 변경 이후에는 새로운 언어 resource 를 가져온다.

기존에 사용하던 Activity의 context 기준으로 string resource 를 접근해도 마한가지이다.


결국 Context 는 그대로이고, context 를 통해 resource 를 접근할 때 시스템 언어를 참조하는 것으로 보인다.



-

Service 도 Activity 처럼 재생성되는가?

재생성되지 않는다.

그리고 res 에 대한 접근은 background thread 가 참조하는 방식을 그대로 따른다.



-

결론은...

NOS 의 동작을 확인해봤을 때,

1. Activity 는 재생성이 된다.

2. Service 는 재생성되지 않는다.

3. locale dependent 한 res 를 cache 해놓는 것은 위험하다. (LocaleChange Broadcast 를 받아서 reefresh 라도 시켜줘야 한다.)




반응형

댓글