0

활동을 알 수없는 횟수만큼 재사용하는 애플리케이션이 있습니다. 실행 중Android 애플리케이션 라이프 사이클 혼란

a> b1 || c1> b2 || c2> ...

> b1> b2> b1으로 가면 내 앱은 여전히 ​​화면에 b1 목록을 표시하지만 클릭하면 해당 b2 활동으로 이동합니다. b에 대한 데이터를 보유하는 데 사용하는 arrayList는 b의 올바른 인스턴스에 대해 복원되어야합니다.

필자는 http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle 이상을 읽었지 만 동일한 활동을 다시 사용하면 이후 onPause 및 onResume이 작동하지 않을 것이라고 생각합니다.

답변

0

모두 활동간에 이동하는 방법에 따라 다릅니다.

뒤로를 누르거나 finish()을 누르면 작업이 삭제됩니다. 나는이 경우에 당신이 b2에 finish()을하고 있고 b1로 돌아가는 것을 믿습니다.

액티비티가 인스턴스 인 인 액티비티를 생각해보십시오. 스택에 동일한 활동의 ​​여러 인스턴스를 포함 할 수 있습니다.

당신이에 있고 당신이 당신의 스택을 B1로 이동합니다 다음과 같이 유지 : 다른 작업을 수행하는 경우

b1 
a 

당신이 B2로 이동 스택 그런 다음이

b2 
b1 
a 

처럼 얻는다 startActivity() B1을 위해 당신은 당신이 finish()을 할 경우 또는를 누르면, 그러나

b1 
b2 
b1 
a 

를 얻을 수 다시 b2를 파괴하면 b1에서 얻은 첫 번째 인스턴스로 돌아옵니다. 기억하십시오 : 스택에는 다양한 데이터를 보유 할 수있는 액티비티 인스턴스가 있습니다.

+0

내가 활동 b2를 다시 누르면, b1의 UI 목록 만 표시됩니다. 실제 데이터는 여전히 b2의 데이터입니다. 12345와 b1에 대한 목록이 있다고 가정 해 봅시다. 67890을 표시하는 b2를 엽니 다. 다시 히트하여 12345가 표시됩니다. 그 시점에서 데이터를 기록하기 위해 목록 항목을 선택하면 3이라고 말하면서 b1의 실제 데이터를 기록합니다 복원되지 않습니다. – r2DoesInc

+0

나는 당신이 당신의 데이터를 조직하는 방법에 대한 아이디어가 없다. 그러나 스택의 맨 위 활동이 종료되면 스택의 다음 활동에서'onResume()'이 호출됩니다. 'onResume()'을 확인하여 무엇을하고 있는지 확인하십시오. 또한 정보 또는 어댑터를 제공하는 구조에서 변경 작업을하고 있는지 확인하십시오. 그리고 마지막으로 정보가 정적인지 확인하십시오 (따라서 모든 활동에서 공유 할 수 있습니다). 또는 귀하의 정보가 귀하의 활동에 국한되어 있는지 확인하십시오. –

관련 문제