본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android] Recent app 에서 swipe 로 app 을 죽이면 process kill 이 될까?

by 돼지왕 왕돼지 2020. 7. 25.
반응형




-

Recent app 에서 app 을 swipe 해서 kill 시켰을 때 동작에 대한 공식 doc 은 발견하지 못했다.

doc 으로 명시하기에는 조건이 너무 까다롭거나, 혹은 유연하게 변경하기 위함이라고 추정된다.



-

그래서 구글링을 해보았다.

대부분의 결론은 이렇다.

Recent app 에서 app kill 시키는 것은 process kill 과 다르다.

Activity stack 을 모두 날려버리는 것으로 생각하는 것이 좋다.

음악 서비스가 돌고 있을 때 Recent app 에서 swipe 로 죽인다고 음악이 멈추지는 않는걸 생각해봐라.



-

그런가보다... 하고 실제 테스트를 해보았다.

일단 bg service 같은 거 없이 그냥 "Hello World!" 를 표시하는 Activity 를 하나 띄워놓고, recent app 에서 swipe 해보았다..

process kill 이 되었다. (android studio logcat 에서 "dead" 가 떴다.)

결론적으로 bg 동작하는 것이 아무것도 없는 activity 를 swipe 로 kill 했을 때 process kill 로 연결된다.



-

그럼 bg service 가 아닌 bg thread 가 뭔가 돌고 있으면 process kill 로 연결되지 않는지 시험해보았다.

Thread 를 하나 띄워서 1초간 자고, 로그를 찍는 것을 1000회 반복시키고, recent app 에서 swipe 해보았다.

process kill 이 되었다. (마찬가지로 android studio logcat 에서 "dead" 가 떴다.)

결론적으로 worker thread 의 존재유무가 dead 를 막지를 못한다.



-

이번에는 구글링 했던 것과 같이 Service 를 하나 띄우고 service 가 살아 있을 때는 어떻게 되는지 시험해보았다.

Service 에서 마찬가지로 Thread 를 하나 띄워서 1초간 자고, 로그를 찍는 것을 1000회 반복시키고, recent app 에서 swipe 해보았다.

process kill 없이 activity 만 죽었다.

Service 를 foreground 로 띄우지 않았기에 약 10초정도 후에 service 가 죽고 process 도 함께 kill 되기는 했다.



-

다른 조건과 변수들도 있겠지만, 일단 실험 결과만 정리해보면 아래와 같다고 결론 내릴 수 있겠다.

Service 가 작동하지 않고 있음 -> Recent app swipe = process kill

Service 가 작동하고 있음 -> Recent app swipe = activity stack clear -> Service 가 종료됨 = process kill



-

끝!!




반응형

댓글