-
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
-
끝!!
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[android] ART 의 JIT (Just-In-Time) Compiler 에 대해 알아보자 (0) | 2020.07.27 |
---|---|
[android] App 이 kill 되면 Alarm 이나 Job 은 어떻게 될끼? (0) | 2020.07.26 |
[android] JobScheduler dumpsys log 분석해보자 (0) | 2020.07.24 |
[android 10] 개발자를 위한 Android Q 가이드 (Highlights) (0) | 2020.03.17 |
[android 10] android Q 기능과 API 들 (0) | 2020.03.16 |
댓글