안드로이드 개발 질문/답변
(글 수 45,052)
A -> B-> C -> B ->C -> B -> C
앱의 구조는 위와 같고요 액티비티가 이런식으로 B-> C 를 자동으로 계속 반복하며 왔다갔다
진행되며 B에서 뒤로가기를 하지 않는 이상 A로 나가는 일은 없는 시나리오입니다.
B -> C 를 부를 때 startActivityForResult로 부르며
B <- C 로 되돌아갈때는 setResult후 finish() 시키고 있습니다.
B에서는 handler가 계속 돌아가고 있습니다.
Handler에 네가지 메시지를 반복적으로 돌리고 있는데요(메시지를 간단하게 1,2,3,4 라고 하겠습니다)
핸들러에 메세지1을 보내고 3초후에 메시지2를 호출합니다
메시지 2는 30초후에 메시지3을 호출합니다.
메시지 3은 3초후에 Intent로 액티비티 C를 실행합니다.
메시지 4는 시간을 체크하고 있기 때문에 1초 간격으로 자기 자신을 호출합니다.
액티비티 C가 끝나고 B로 돌아오면 위와 같은 일련의 작업후 다시 C를 호출 하고 이런식으로
반복되는 구조 인데 계속 반복하다보면
C가 다 돌고 나서 B로 돌아가려고 할 때
B가 시스템에서 킬시키는걸로 추정되어서 A로 가버리는 상황이 발생합니다.
B가 죽을때 남아 있는 로그는 다음과 같습니다.
I/Process(4784): Sending signal. PID: 4784 SIG: 9
I/ActivityManager(1578): Process com.sangsang.boxup (pid 4784) has died.
I/WindowManager(1578): WIN DEATH: Window{42002890 com.sangsang.boxup/com.sangsang.boxup.B paused=false}
W/ActivityManager(1578): Force removing ActivityRecord{41f25c90 com.sangsang.boxup/.B}: app died, no saved state
I/WindowManager(1578): WIN DEATH: Window{41f826f0 com.sangsang.boxup/com.sangsang.boxup.A paused=false}
I/WindowManager(1578): WIN DEATH: Window{42107170 com.sangsang.boxup/com.sangsang.boxup.C paused=false}
I/WindowManager(1578): WIN DEATH: Window{41f6beb0 SurfaceView paused=false}
여지껏 아무런 exception 도 떨어지지 않아서 로그쪽을 유심히 보지 않았는데 info 등급으로
위와 같은 로그가 남아있더라구요
혹시 시스템에서 강제로 죽이지 못하도록 하는 방법이라던지 아니면 이를 회피하거나 우회할수 있는 방법이
있는지 조언을 구합니다~!
메시지 4가 이해가 안되네요. C를 부르면 B의 모든 핸들러는 동작을 멈추어야 합니다.