2015-01-12 3 views
4

인 텐트 오브젝트의 수명이 나에게 불명확하다.나중에 사용할 수 있도록 onSaveInstanceState()에 Intent 객체를 저장해야합니까?

Activity의 전체 수명 동안 인 텐트 오브젝트의 속성을 항상 사용할 수 있습니까? 또는 Activity에 전달 된 값을 저장해야합니까?

Activity의 전체 수명 동안 Activity에 전달 된 Intent 값 (action 및 extra)을 사용하고 싶습니다. 이 값을 Activity 객체의 변수에 복사하지 않으려합니다. Activity에 전달 된 Intent에서 'getIntent()'를 호출하여 해당 값을 가져올 수있는 이유는 무엇입니까?

메모리에 공간을 확보하고 나중에 다시 복원하기 때문에 Android에서 Activity를 파괴 할 때 'getIntent()'호출로 인 텐트 객체가 계속 남아 있습니다. 또는 'onStateSaveInstanceState()'에서 액티비티로 전달 된 번들에 인 텐트의 값을 저장해야합니까? 답변

답변

2

의도의 수명에 대한

덕분에 직접 활동의 수명에 연결된다. 활동이 파괴 된 경우 의도는 더 이상 사용할 수 없습니다. 또한 의도는 활동의 매니페스트에서 설정 한 플래그에 따라 다른 인 텐트로 덮어 쓸 수 있습니다. 활동이 파손 된 후 의도 데이터가 실제로 필요한 경우 데이터 즉 환경 설정에 데이터를 저장해야합니다.

+0

활동이 파괴되고 다시 복원 된 후 의도가 필요합니다. 예를 들어 구성이 변경되었거나 메모리가 여유가 있기 때문입니다. 그런 다음 getIntent()를 호출하여 활동에 원래 매개 변수를 가져올 수 있습니까? –

+0

예를 들어, 활동을 직접 죽인 경우 다른 활동으로 이동했거나 시스템이 메모리를 확보하기 위해 해당 활동을 종료했기 때문에 활동이 파괴되었습니다. 여기에 대한 좋은 예가 나와 있습니다. http://stackoverflow.com/questions/14853327/intent-not-restored-correctly-after-activity-is-killed-if-clear-top-and-single-t 나는이 데이터를 영구적으로 필요로한다면 (당신의 설명처럼) getIntent()에 의존하지 말고 저장할 것이 권장된다. – Carsten

+0

시스템이 메모리를 비우므로 활동이 파괴 된 경우 어떻게됩니까? –

관련 문제