2017-12-17 21 views
0

여러 개의 조각과 주요 활동이있는 앱이 있습니다. 내 프래그먼트는 주요 활동 내부의 프레임 레이아웃에 내용을 표시하도록 설정됩니다. 보기 호출기와 같은 종류입니다.onRestoreInstance 상태 Null in Fragment

각 조각은 목록보기로 구성됩니다. 목록의 내용을 주 활동에 저장합니다.

앱이 일시 중지되면 (사용자가 기기의 홈 버튼을 누르면) 앱의 값을 번들에 저장해야합니다. 어떤 이유로 사용자가 응용 프로그램을 다시 시작할 때 onRestoreInstanceState()가 호출되지 않습니다. 결과적으로 저는 변수에 대한 값을 얻지 못합니다.

사용자가 별도의 응용 프로그램에서 다시 시작하려고하면 응용 프로그램이 중단되는 경우가 있습니다. 이것은 앱이 오랜 시간 동안 백그라운드에 있거나 기기의 메모리가 부족한 경우에만 발생합니다.

onRestoreInstanceState() 또는 다른 것을 사용해야합니까? onRestoreInstanceState()를 재정의하고 수동으로 호출 할 수 있습니까?

+0

저장된 인스턴스가 onCreate 및 onCreateView에도 전달됩니다 ... 거기에 저장된 상태를 확인하지 않는 이유는 무엇입니까? – Kushan

답변

0

보통 이러한 경우에 안드로이드는 전체 앱 프로세스를 죽입니다.

Android는 스택과 모든 조각을 다시 만들어갑니다. 그렇게 할 때 그 내부에 저장된 번들을 통과하기 때문에 그것은 또한 영리 모두 당신의

onCreate and onCreateView 

당신은 무효 이러한 번들을 확인하고 그것에서 데이터를 일반 번들을 사용하고 복원하는 것처럼 사용할 수 있습니다. 나는 일반적으로 sqlite 안에 큰리스트를 저장하고 state가 번들 안에 저장되었는지를 나타내는 boolean 플래그를 저장한다.

저장되어있는 번들에 1MB 제한이 있으며 이는 전체 응용 프로그램에 대한 것입니다. 최신 버전 인 api 24+에서는 상태 저장이 더 큰 경우 예외가 발생한다고 생각합니다. 이전에 logcat 안에 기록 된 경고가있었습니다