2013-02-08 3 views
0

이 주제에 관해 다른 질문이 많이 있지만이 문제를 파악하지 못했습니다. 안드로이드 문서에서 Android 활동 상태, 정보를 저장할 수 없음

이 ( http://developer.android.com/training/basics/activity-lifecycle/recreating.html)이 그것을 말한다 :

기본적으로

, 시스템은 활동 레이아웃에서 각 뷰 객체에 대한 정보를 저장하기 위해 번들 인스턴스 상태를 사용 (예 : 텍스트 값은 체결 EditText 개체). 따라서 액티비티 인스턴스가 파기되어 다시 생성되면 레이아웃 상태는 사용자가 필요로하는 코드없이 이전 상태로 복원됩니다.

그래서 EditText-view가 포함 된보기를 생성하여 에뮬레이터에서이를 테스트했습니다. 그런 다음 정보를 입력하고 홈 버튼을 누릅니다. 앱을 다시 열면 정보가 사라집니다. 자동으로 지속될 수 없습니까, 아니면 뭔가 빠졌습니까?

답변

1

그럼 부분적으로 부분적으로 잘못되어 부분적으로 잘못되었습니다. 회색으로 된 인용문이 문맥에서 나오기 때문에 틀렸어.

사용자가 뒤로 누르거나 활동 자체를 완료하기 때문에 활동이 파괴

, 그 활동 인스턴스의 시스템의 개념은 사라입니다 : 나는 당신이 제공된 링크에서 올바른 인용함으로써, 간단하게 설명 할 것이다 이 동작은 동작이 이 더 이상 필요하지 않음을 나타 내기 때문에 영원합니다. 그러나 이 (정상적인 앱 동작이 아닌) 시스템 제약 조건으로 인해 작동을 중단하면 실제 활동 인스턴스가 사라지더라도 시스템은 사용자가 다시 시스템을 탐색하면 은 파괴 된 활동의 상태를 설명하는 저장된 데이터 집합을 사용하여 활동의 새 인스턴스를 만듭니다.

주의 :

지금, 그 단락 뒤에 우리가 설명을
귀하의 활동이 파괴되어 사용자가 화면을 회전 할 때마다 다시 생성됩니다. 화면의 방향이 바뀌면 화면 구성이 변경되고 작업에서 대체 자원 (예 : 레이아웃)을 로드해야 할 수 있으므로 시스템이 전경 활동을 파괴하고 다시 생성합니다.

또 하나, 여러 linew은 다음과 같습니다 :

가 활동 상태에 대한 추가 데이터를 저장하려면, 당신은 onSaveInstanceState() 콜백 메소드를 재정의해야합니다. 사용자가 활동을 떠날 때 시스템에서 메소드를 호출하고 사용자의 작업이 예기치 않게 파괴 된 경우에 저장 될 번들 객체를 전달합니다. 나중에 시스템에서 활동 인스턴스를 재 작성해야하는 경우, 은 동일한 Bundle 오브젝트를 onRestoreInstanceState() 및 onCreate() 메소드 모두에 전달합니다.

응용 프로그램이 실수로 충돌 할 때 또는 화면의 회전이 또한 당신의 전경 (다음 다시) 소멸 시키면되고, (이름을 몇 가지로)을 사용하는 경우이 번들 (번들 savedInstanceState)가 사용된다.

"활동 상태 저장"섹션을 살펴볼 수도 있지만이 링크 here을 권하고 싶습니다.

관련 문제