on
화면 회전
화면 회전시 컨텐츠 변경방법 조사
앱개발자는 개발시에 xml에 landscape, portrait 2가지 버젼의 app layout을
미리 작성해두어야한다.
그리고 화면구성이 바뀔시에 다른 버젼의 xml로 변경함으로써 회전을핸들.
회전시 실제 일어나는 일과 느린이유?
https://developer.android.com/guide/topics/resources/runtime-changes 에 따르면,
안드로이드는 기본적으로 configuration class에서 회전을 포함한
그 어떤 멤버라도 변화가 생기면 view만 새로 가져오는게아니라
activity 자체를 완전히 destory한후 다시 start, resume 을 거친다
즉 회전할때마다 사실상 프로세스를 재시작 시키며.
재시작전에 기존의 데이터들을 save 하고 재시작후 restore한다.
이렇게 하는이유는 이것이 변경처리 오류 가능성을 줄이기 떄문이라고한다.
하지만 단점도 있는데 문서의 내용에 따르면,
기존데이터가 복잡하거나, activity에 network, background task가 걸려있으면
그 저장,복구가 오래걸리며, 데이터 손실의 가능성도 있다고한다.
? 아이폰은 액티비티의 재시작없이 처리한다고함.
해결책?
이런 재시작을 막을 방법을 2가지를 제시해줬는데
하나는 재시작을 제한을 미리 선언하는것이다.
그런데 이렇게하면 개발자가 직접 모든 구성변경시 발생가능한 예외를 모조리 직접처리해야하고
하나라도 빼먹으면 회전이 적용되지 않는다고함. 구글은 추천하지않음
둘째는 view model로 재시작은 하지만 데이터를 view 자체에 저장하는 view class인
viewmodel을 이용해서 데이터 저장 - 복구의 오버헤드를 줄이는 방법이다.