2011-02-02 9 views
1

현재 다음과 같은 행동이있는 응용 프로그램을 작업 중입니다 : 활동 중 하나에서 사용자는 다른 항목을 목록으로 선택할 수 있습니다. 그렇게하면서 사진을 찍어서 저장하고 이전 활동으로 돌아갈 수 있어야합니다.Android - 새 활동 시작시 활동 상태 저장

다음과 같은 문제가 있습니다. 사용자가 사진을 찍은 후 활동으로 돌아 가면 진행률 (기본적으로 선택한 항목)이 손실됩니다.

내 활동에 android : alwaysRetainTaskState = "true"를 사용하여 현재 상태를 저장하려고 시도했습니다 (사용자가 응용 프로그램을 종료 할 때 훌륭하게 작동합니다. 다른 것, 그 다음에 나중에 되돌아와). FLAG_ACTIVITY_NEW_TASK와 ACTION_IMAGE_CAPTURE 인 텐트를 점심으로 먹으려 고 시도하여 같은 동작 (어딘가 내 홈 화면에서 그림 액티비티를 점심을 먹는 것과 같아야한다고 생각한 곳)을 시뮬레이션했지만 효과가 없습니다. 나는 심지어 startActivityforResult를 사용하여 그림 활동을 점심을 먹으려 고 노력했는데, 어떻게 든 내 활동이 손실되지는 않지만 여전히 효과가 없다는 희망과 함께했습니다.

번들 savedInstanceState를 사용하여 수동으로 저장하고 onPause, onResume, Create (등등)을 재정 의하여 상태를 복원 할 수 있지만 실제로는 직렬화가 쉽지 않은 사용자 정의 구성 요소에는 많은 데이터가 있으므로, d는 그것을 피하고 싶다.

음, 내 질문에 alwaysRetainTaskState 매니페스트 특성과 동일한 동작을 어떻게 재현 할 수 있을까요? 아니면 내 활동 상태를 쉽게 저장할 수 있습니까? 또는 내가 뭘 잘못하고있어, 명백한 것을 놓치고 있니?

고맙습니다.

답변

4

은 내가 수동으로 (등) 작성에 저장하고 onPause, onResume을 재정 의하여 상태를 복원하기 위해 번들 savedInstanceState를 사용할 수 있습니다 알고 있지만 쉽게 직렬화 가능하지 않은 사용자 정의 구성 요소의 데이터 실제로 많은 그래서,이 나는 그것을 피하고 싶습니다.

"좋아"하는 것이별로 중요하지 않은 내용입니다. 구성 변경 (예 : 세로에서 가로로 전환)을 처리하려면이 코드가 필요합니다. onSaveInstanceState()onRestoreInstanceState()을 구현 한 다음 이전 단락에있는 부적절한 해킹을 모두 취소하십시오 (예 : singleInstance, alwaysRetainTaskState).

+0

분명히, 내가 좋아하는 것은 응용 프로그램의 요구 사항에 의해 결정됩니다. 그 "부적절한"해킹에 관해서, 나는 그 요점을 놓치고 있지만, 왜 그들이 부적절한 것일까 요? 그들은 피하는 것을 좋아합니까? 나에게 꽤 깔끔한 것 같지만, 다시 한번, 나는 약간의 정보를 놓칠지도 모른다. 홈 화면과 응용 프로그램으로 다시 돌아갈 때 내가 원하는 동작을 얻을 수 있다면 활동에서 응용 프로그램을 시작하면 동일한 종류의 것을 찾을 수 있다고 생각하는 것이 정말 안 좋습니까? – Ours

+0

@Ours : "그들은 피하는 것이 좋아?" - 문서에서는 'singleInstance'가 "대부분의 응용 프로그램에는 적합하지 않습니다"라고 명시 적으로 표시하고 인용 부호로 표시된 부분은 빨간색으로 강조 표시됩니다. 'alwaysRetainTaskState = "true"'는 그 의도 된 목적에 잘 맞지만, 인스턴스 상태를 적절하게 저장하기위한 일종의 만병 통치약이되어서는 안된다. – CommonsWare

+0

확인. 그것은 내 경우에 적절하지 않다는 것을 의미하지는 않습니다. 그리고 그 모든 것이 내 문제를 해결하지 못합니다. 어쨌든 당신의 답변과 조언에 감사드립니다. – Ours