2011-08-28 2 views
4

저는 Android에 익숙하지 않아서 savedInstanceState에 문제가 생겨 수명주기를 관리하고 있습니다.savedInstanceState는 실제로 언제 사용됩니까?

http://developer.android.com/guide/topics/fundamentals/activities.html#Lifecycle 나는 라이프 사이클에 관한 기사를 읽었지만, 프로세스가 죽을 때 정말로 알지 못한다. 내 멋진 savedInstanceSate가 사용될 것이다! 나는 "HOME"을 누를 수 있지만, "onPause"만 시작한 다음 "onResume"이라고 생각합니다.

메뉴 -> 설정 -> 응용 프로그램 관리 -> 응용 프로그램 이름 -> 강제 정지를 선택하면 실행중인 응용 프로그램으로 간주되지만 다시 실행하면 " 첫 번째 활동 ". 따라서 응용 프로그램을 닫는 것과 같습니다. 이해가된다면 "프로세스를 죽이는"것이 아닙니다.

그래서 여기 내 질문이 있습니다 :

1) 어떻게 내 프로세스를 다시 시작할 때 나의 앱이 savedIntanceState를 사용합니다 (사망했다고 확신 할 수)?

2) savedInstanceState가 잘 프로그래밍되어 있는지 테스트하기 위해 프로세스를 강제 종료하려면 어떻게해야합니까?

3) 앱이 다시 시작되고 "onCreate"가 호출되면 (savedInstanceState! = null 일 때), 내가 전화했을 때 내린 추가 의도 정보에 여전히 액세스 할 수 있습니까? 활동 또는 인 텐트의 정보가 프로세스가 종료되면 삭제 되었습니까? 달리 말하면, 내 saveInstanceState에 Intent Extra에 저장된 내용의 복사본을 포함해야합니까? 내가 충분히 명확 해요 희망

)

+0

kill 을 사용하여 adb 쉘에서 프로세스를 종료 할 수 있습니다. –

답변

1

1)에 대해 걱정할 필요가 모든 사용자 활동의 onSaveInstanceState()을 무시한다. Android가 프로세스를 종료하기 전에이를 호출합니다.

2) Android test project을 설정해야합니다. 그런 다음 ActivityInstrumentationTestCase2을 확장하는 테스트를 만들고 getInstrumentation()을 호출하여 Instrumentation 객체를 가져올 수 있습니다. 거기에서 Instrumentation.callActivityOnCreate으로 전화를 걸어 테스트 용으로 사용할 번들 객체를 전달할 수 있습니다.

3) 나는 당신이 savedInstanceState 번들에 엑스트라를 저장할 것이라고 확신합니다.

+0

@CnuMar가이 대답을 수락 했어야합니다. +1. – ateiob

관련 문제