2009-12-29 6 views
2

기존 활동에 대한 finish()를 호출하지 않고 기존 활동을 스택에 유지하고 새 활동으로 이동하지 않습니다. 이전 버튼을 누르면 이전 활동으로 돌아갑니다.Android 스타 액티비티 및 스택이 메모리에 유지됩니다.

그것의 내가 있음을 정의 할 수있는 중앙 집중식 장소가 메모리 (스택)

지금 문제는 내가 모든 활동에 대한 마무리를 호출하지 않을 것입니다에 남아있는 이전의 모든 활동) (라고 마무리 beeing는 보관하지 의미 마지막 3 개의 활동 만 스택에 보관하고 나머지는 제거하십시오.

+0

문제가 해결 되었습니까? 낮은 메모리 상태에서 활동을 유지할 수 있습니까? –

답변

7

[activity] 태그의 Android Manifest에서 android를 지정할 수 있습니다. noHistory - 사용자가 액티비티 스택에서 제거해야하는지 여부 (사용자가 finish() 메소드를 호출 할 때) 화면에 더 이상 표시되지 않습니다. 완료되어야한다면 "true", 완료하지 않으면 "false"입니다. 기본값은 "false"입니다. 값 "true"는 활동이 기록 추적을 남기지 않음을 의미합니다. 작업의 액티비티 스택에 남아 있지 않으므로 사용자가 작업 스택으로 돌아갈 수 없습니다. 이 속성은 API 레벨 3에 도입되었습니다.

+0

+1 이것은 활동의 onStop()에서 finish() 호출과 동일한 것으로 생각할 수 있습니다. Intent Flags를 사용하여 스택의 활동을 제어 할 수도 있습니다. – Samuh

+0

그래도 메모리가 부족한 상태에서 장치가 작동중인 경우에도 활동을 유지합니까? –

0

메모리 사용에 대해 걱정되는 것처럼 들리 겠지만 안드로이드는이 모든 것을 처리합니다.

귀하의 활동 중 하나가 귀하의 활동 중 다른 활동에 의해 덮여있어 사용자가보고 싶어하지 않는 경우 은 (는)입니다. 중지 된 활동은 여전히 ​​모든 상태를 유지해야하지만 메모리가 필요할 때 시스템에 의해 종료 될 수 있습니다. 따라서 onStop()onRestart() 메서드를 구현하여 시스템에서 시스템을 강제 종료하고 다시 시작한 후 상태를 복구 할 수 있도록해야합니다.

자세한 내용은 Component Lifecycles in the Androind Fundamentals document을 Android 개발자 문서에서 확인하십시오.

1

액티비티로 해결되는 새로운 인 텐트를 시작할 때 적절한 인 텐트 플래그를 설정하는 것을 고려하면 해당 플래그 목록은 here입니다. 이 플래그를 사용하면 히스토리 스택에서 활동 순서를 재정렬하고이를 지울 수도 있습니다. 활동 및 태스크 가이드 라인 문서 see here에 이에 대한 훌륭한 설명이 있습니다.

또는 Android Manifest라고도하는 배포 설명자에서 활동에 적절한 속성을 설정합니다 (noHistory가 문제에 적합). 자세한 내용은 this을 참조하십시오.

관련 문제