2012-06-03 2 views
4

"App 프로세스가 종료되었습니다"및 "사용자가 활동으로 이동 한 후"Dev Guide 활동에서 말한대로 으로 복원되었습니다. 우선, 나는 이런 일이 일어난 것을 본 적이 없다. 프로세스가 종료 될 때 Activity로 되돌아 갈 수있는 것처럼 보이지 않습니다. 프로세스가 사라진 후 Activity는 스택에서 사라집니다.프로세스가 종료 된 후 안드로이드 활동이 어떻게 "복원"됩니까?

그런 일이 발생하면 어떻게 될 것입니까?

나는 이상하지만 좋은 점을 보았습니다. Activity A1은 다른 앱의 Activity A2을 시작합니다. 이제 A2은 전경 활동입니다. 메모리가 부족 해지면 적어도 에뮬레이터 (RAM을 쉽게 먹을 수있는 곳)에서 A1 대신 A2이 죽습니다.

두려움은 다음과 같습니다. 내 앱에 스택에 2 개의 액티비티가 있으며이를 A0A1이라고합니다. 그리고 A1은 또 다른 앱 Activity A2을 출시했습니다. A0A1을 시작하려고하면 A1은 데이터 개체 D에 대한 참조를 제공합니다. 이제 A0A1에 대한 프로세스가 A2가 포 그라운드에있을 때 종료되면 D도 손실됩니다. A2가 끝나면 최소한 A1을 복원해야합니다. 따라서 A1D의 복원을 처리해야합니다. 그리고 A1이 더 많은 것은 아직도 죽은 자에게 A0에게 복원 된 D에 대한 언급을 알리는 방법을 찾아야 할 것입니다. 이것은 복잡하거나 잘못된 길을 걸었습니까?

답변

7

시스템은 포 그라운드 앱을 유지할 수있는 모든 작업을 수행합니다.

활동을 시작하는 데 사용 된 Intent은 프로세스가 죽을 때 시스템에 의해 저장됩니다.

이렇게하면 사용자가 죽은 응용 프로그램으로 돌아 오면 응용 프로그램이 복원되고 동일한 Intent이 실행되어 모든 추가 기능을 포함하여 활동을 시작합니다.

이것은 활동을 시작하기 위해 Intent에 전달한 모든 데이터가 활동이 복원 될 때 계속 남아 있음을 의미합니다.

눈치 채지 못할 지 모르지만 Android는 일상적인 사용 과정에서 프로세스를 중단시키고 다시 생성하며 플랫폼이 제공하는 완벽한 멀티 태스킹의 요점을 알려줍니다.

"개발"설정에서 "활동 보관 안함"옵션을 사용하여 앱을 항상 테스트해야합니다.

+0

"활동하지 마시고"팁을 가져 주셔서 감사합니다! 앱 레크리에이션 디버깅에 정말 유용합니다. – Granjero

관련 문제