마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

액티비티 생명주기 네트워크 관련 질문

0 추천

안드로이드 액티비티 생명주기 관해 질문드립니다.

 

현재 onCreate 내부에서 Handler, Timer 클래스와 Run을 이용해 웹뷰를 통해 반복하여 URL에 접근하는 코드를 테스트하고 있습니다. Thread 내 작업이 동작하는 HandleMessage에 중간, 중간 로그캣을 통해 값을 확인할 수 있도록 로그를 찍어두었는데요.

이 App을 켜둔 상태에서 전원버튼을 누르면 당연히 폰이 잠금 상태로 들어가니, 제가 만들어둔 코드가 동작하지 않을 거라 생각했는데, 로그캣을 보니 잠금 모드에 들어가도 동작을 하는 것 같아보이고, 수십분 냅두어봤는데 로그캣이 찍히는 것을 보니 계속해서 백그라운드에서 Thread를 통해 URL에 접근하는 것 같았습니다.

 

https://developer.android.com/training/basics/activity-lifecycle/stopping?hl=ko

안드로이드 공식 홈페이지의 액티비티 관련 설명을 보면, 잠금모드로 들어가면 onStop()이 호출되어 App이 동작하지 않을 줄 알았는데 그게 아닌 것 같습니다.

이를 테스트해보기 위해 생명주기와 관련된 함수를 선언해놓고 로그를 찍어보니, 잠금버튼을 누를 때, onPause(), onStop()이 호출되는 것을 알았습니다.

 

onStop()이 호출되더라도 계속에서 백그라운드 작업이 진행되는 이유가 무엇일까요? 제가 개념을 혼동하고 있는게 아닌지 혼란스럽습니다..

 

액티비티는 말그대로 UI를 표현하는 하나의 객체이니 UI를 표현하는게 멈추는 것이고 백그라운드 작업은 도는것인지, 혹시 제가 잘못 생각한 부분이 어디 있을까요

 

개발왕스 (140 포인트) 님이 2019년 4월 16일 질문

1개의 답변

0 추천
동작하는 Thread가 달라서 그렇습니다.

Activity에서 화면을 그리는 Thread는   Main UI Thread 라 불리는 Thread로 onPause, onStop가 불리면 화면을 그릴 필요가 없기 때문에, 이 Main UI Thread 는 동작되지 않겠지만  통신을 위해 생성한 다른  Thread의 동작에는 전혀 관여를 안하기 때문에 원하는 시나리오대로 구현하시려면  onPause, onStop 이 불릴 때  다른 Thread 의 동작도 멈추도록 해 주셔야 합니다.
익명사용자 님이 2019년 4월 16일 답변
2019년 4월 16일 수정
...