활동/동계모각코2020

[모각코#6]결과

OrehOnyah 2020. 1. 23. 16:58

우선 이 내용을 시작하기에 앞서 Play store에서의 cpu-z 어플리케이션을 참고했다.
또한, 센서를 다루는 여러 Root/Non-Root 툴이 많았던 것으로 기억하는데, 기억나는 대로 검색하고 정리했다.

안드로이드 상태, 센서, 로그 등의 데이터는 다음과 같은 내용이 있다.

1. 상태

1.1. 배터리

안드로이드 developer 사이트(배터리 모니터링)
공식 문서에서 볼 수 있듯, 배터리 잔량, 충전 상태, 배터리 수준 변화를 확인할 수 있으며, 수준 변화 및 충전 상태 변화는 인텐트 필터에서 이벤트 수신을 대기할 수 있다.
만약 데이터를 수집하게 된다면 배터리 잔량은 일정 시간마다(예시:1초마다) 기록하고,
충전 상태 및 배터리 수준 변화는 발생할 때마다 기록할 수 있을 것이다.

1.2. 메모리

안드로이드 developer 사이트(메모리 관리)
zram이란?
안드로이드 developer 사이트(RAM 사용량 조사)
developer 사이트의 '메모리 관리'탭을 읽어 보면 안드로이드의 램 관리에 대한 내용을 알 수 있다.
안드로이드에서는 zram이라는 영역이 있어서(정확히 말하면 리눅스에 있다. 우분투에서도 쓸 수 있다고 한다.) 스왑과 비슷한 용도로 사용한다고 한다.

조금 다른 이야기인데, zram이 안드로이드에 처음 나왔을 때 즐겨 읽던 디벨로이드 카페에서는(아마 xda에서도 그랬지 않았었나 싶다) zram이 플래시 메모리 수명을 깎아먹는다고 zram 없애는 트윅이 크게 인기를 얻었던 것 같다. 본인도 zram 없애는 트윅을 사용했던 사람들 중 한 명이다.

어쨌든, 쓰고 싶었던 내용은 onTrimMemory에 대한 것이다. 안드로이드 developer 사이트(메모리 관리)의 '앱 메모리 관리' 탭에 나온 이야기로, onTrimMemory()는 메모리 관련 이벤트인데, 4.0 이하 버전에서는 onLowMemory()로 불리는 바로 그 함수이다.
아마도, 메모리가 적은 휴대폰에서 게임, 검색, 멀티태스킹 등 많은 것을 하고 싶었던 사람들은 느꼈을 것이다.

게임 공략을 찾고 게임을 이어 하려 했는데 재접속이 되버리네? 또 기다려야 하잖아!

이건 Out Of Memory Killer(OOM Killer)이다. 어플리케이션마다 다르겠지만 Low Memory Killer(LMK)는 메모리 절약을 위해 앱 자체에서 필요 없는 메모리를 절약하는 방식을 정의하는 것이고 OOM Killer는 프로세스 자체를 죽여버린다.
따라서 '잘 만들어진 앱'은 onTrimMemory()를 잘 구현해야 하는 것 같다.

...

또 다른 얘기로 새 버렸다. 그래서 결론은 onTrimMemory()를 활용하면 스마트폰에서 Low Memory Killer가 동작하는 타이밍을 확인할 수 있다는 점이다.

또 한 가지는, 위에 링크한 세 개의 사이트 중 마지막 사이트인 안드로이드 developer 사이트(RAM 사용량 조사)Dalvik 로그 메시지ART 로그 메시지이다.
Dalvik 로그 메시지는 마시멜로 이전 스마트폰에 적용된 시스템인데, 모든 가비지 컬렉터(GC)가 로그 메시지를 출력한다고 한다. ART 로그 메시지에서는 명시적으로 요청된 GC만 로그 메시지를 출력한다.
이외에 힙 덤프 분석, 메모리 할당 추적 등 여러 방법들이 있지만 이 내용은 추후 진행하면서 필요할 경우 추가하도록 하겠다.

2. 센서

안드로이드 developer 사이트(센서)
developer 사이트의 '센서'탭에는 센서에 관한 내용이 나와 있다.
동작 센서, 위치 센서, 환경 센서가 있으며, 센서 사용법은 모두 동일하다.
동작 센서는 가속, 회전, 중력 등을 다루고,
위치 센서는 자기장, 거리, 회전 벡터, 근접 센서 등을 포함하며,
환경 센서는 조도, 기압, 온도(기기온도/외기온도), 습도 등이 있다.

이 내용은 추후 더 정리해 두겠다.

3. 로그

로그는 현재 실험해 본 결과 logcat 명령어를 Runtime으로 실행하여도 해당 앱의 로그만 출력되기 때문에, 전체 로그를 출력하기 위해서는 다른 방법이 필요할 것으로 보인다.
실험해 볼 내용은 안드로이드 터미널 에뮬레이터를 이용하여 전체 로그가 보이는지 확인해 봐야 한다.

 

이외에도 LTE/WiFi/Bluetooth/NFC 상태 등을 확인할 수 있겠다.