안드로이드 개발 질문/답변
(글 수 45,052)
안드로이드 초보라.. 수명주기 문제인듯한데 쫌 설명좀 해주세요.
A라는 메인 액티비티가 있다고 합니다. B액티비티를 호출후 back버튼을 누르면 A액티비티로 이런방식으로 A에서 다른 C라는 액티비티를 호출후 다시 A에서 B라는 액티비티를 호출했을때 이전에 B액티비티에 있는 listView를 그대로 사용하고 싶은데 잘 안되네요. 어떻게 하면될까요.
FLAG_ACTIVITY_SINGLE_TOP 을 쓰면 이전에 있던 곳에서 사용한다고 들어서 사용을 했는데도 잘 안되네요.. 이해를 잘 못해서 그런가.. 어느부분을 공부해야 하는지 알려주시거나 방법좀 알려주시면 감사하겠습니다.
A ->B ->A ->C A B
스택을 이해하세요.
A->B로 가면 Stack0에 A, Stack1에 B가 있습니다.
A->B->C가 되면 B를 finish()로 줄인거라면 Stack0에 A만 있습니다.
다시 C로 가면 Stack0에 A, Stack1에 C가 있습니다.
다시 C를 finish()로 끝내면 Statck0에 A만 있습니다.
거기서 다시 B를 가면 Stack0에 A, Stack1에 B가 있는거죠.
우선 스택에 쌓이는 방법을 이해하고 FLAG를 하나씩 적용해보세요
스택보는 방법은 adb shell dumpsys activity로 검색해보면 많이 나옵니다.
(네이x, 구글등에서)
ICS에서는 A->B액티비티로 넘어갈 때 A액티비티를 죽이지 않더라도 onDestory()까지 호출되기 때문에
A액티비티는 Running activities 상태에서는 보이지 않고 Task에서만 보입니다.
싱글탑은 최상위 액티비티에 남아있는 액티비티가 새로 실행되는 액티비티와 동일할 때 다시 실행하지 않고 재사용하는겁니다.
만약 스택에 A-B-C가 쌓여있는 상태에서 B를 실행한다면 SINGLE_TOP은 의미가 없는거죠.
(최상위 스택에는 C만 있으니까요.)