[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 라도 시켜줘야 한다.)
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[android] SQLiteDatabase 와 SQLiteOpenHelper Test (0) | 2019.01.10 |
---|---|
[android] Low Memory Kill ( LMK ) (0) | 2019.01.09 |
[android] Camera2 API 를 알아보자 (4) | 2019.01.06 |
[Java8 In Action] #16 결론 그리고 자바의 미래 (0) | 2019.01.05 |
[Java8 In Action] #15 OOP 와 FP 의 조합 : 자바8과 스칼라 비교 (0) | 2019.01.04 |
댓글