작년 2018년 5월부터 2019년 1월 까지.. 안드로이드 백그라운드에서 Tcp-Ip 방식을 통해 데이터를 전송하는 모듈을 연구하고 있었다.
결국에는 안드로이드의 운영체제의 제약조건을 극복하지 못하고 설계를 아에 다시하는 것으로 바꾸었다.
안드로이드 6.0에서부터 도즈모드나 베터리세이버 모드의 기능 강화등을 통해서 백그라운드에서 동작하는 행위에 대해서 제약이 갈수록 심해지고 있다.
이를 극복하기 위한 다양한 방법을 찾아보았다..
하지만 작년 내내 찾은 방법 모두 테스트 하여 보았지만 제대로 되는 경우는 아에 없었다. 아무리 좋은 방법이 있더라도 하루를 넘기지를 못했다..ㅠ
물론...5.0이하 기기에서는 잘되었지만;;; 기기버전이 올라가면 올라갈수록 안되었다.
아무튼..
구글에서는 아래 사이트를 통해서 Doze모드에 대해서 설명하고 있다.
https://developer.android.com/training/monitoring-device-state/doze-standby?hl=ko
도즈모드는 2가지 상태가 존재한다.
간단하게 표현하면 완전 잠자기(?), 살짝 잠자기(?) 모드 이정도로 구분되어 진다.
현재 존재하는 대부분의 방법들은 살짝 잠자기 모드까지는 별 문제없이 될 수 있다.
잡 스케줄, 싱크어뎁터, 옛날여러방식 및 FCM등등..
그런데 이러한 모든 방법들이 완전 잠자기 모드에 돌입되면 백그라운드 서비스에 동작중인 모든 행위를 막아버린다. 어떤 방식을 하던지 간에 말이다.
황당한건 FCM을 사용하는 앱도 멈추게 한다는 것이다
-> FCM을 통해서 지속적인 행위를(서비스를돌린다, TCP를한다 등등) 하면 BLOCK당한다.
-> 그렇지 않고 정말 순수한 FCM을 활용해서 메시지를 받는 것이 목적이면 죽이지는 않는다.
그러한 이유는 바로 베.터.리.성.능.최.적.화 라는 이유이다.
물론 그것 말고도 보안같은 이유도 있겠지만..
아무튼 이러한 완전 잠자기 상태를 극복하는 방법은 현재까지는 화이트 리스트에 앱을 등록하는 것이다.
화이트리스트에 등록 된 앱은 도즈모드에서의 프로세스를 잠재우는 킬러(?)에 의해서 자유로울 수 있으며 제약조건 없이 백그라운드에서 프로세스를 계속해서 진행 할 수 있다.
근데..화이트리스트에 앱을 등록하려면 권한을 물어야 한다;;;
문구도 베터리성능에 문제를 줄꺼야~ 라는 내용으로 말이다;
화이트 리스트에 앱을 등록하는 방법은 권한을 묻는 방법 말고는 알려진 내용은 찾지를 못했다..ㅜ
그런데 왠걸, 카톡같은경우 설치만해도 스스로 화이트리스트에 등록(?!!?)이 된다.
스스로 등록하는게 기술인지 아니면 OS에서 알아서 등록해주는 것인지는 모를일이지만..
결론은..
백그라운드로 지속적인 프로세스를 하는 행위는 안드로이드 정책에서 금지하고 하지 못하게 막고있다는 것이다.
백그라운드에서 어떠한 행위를 계속하는 앱을 만든다면 차라리 설계를 다시하는 것이 나을 것 같다.
만약 당신이 카톡개발자 수준의 앱을 만드는 실력이 있다면 모를일이지만 말이다.
'기타 > Android' 카테고리의 다른 글
Android Q(안드로이드 10) (0) | 2019.08.13 |
---|---|
구글 마켓 정책 변경(2019) (0) | 2019.05.02 |
안드로이드 RTT, WIFI를 활용한 실내 GPS (0) | 2019.04.30 |
안드로이드 9.0 (0) | 2019.04.30 |
플레이 스토어 일시 정지 (0) | 2019.04.30 |
댓글