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

앱별 네트워크 사용량 측정

0 추천
앱별 네트워크 사용량을 확인하기 위하여 현재 실행되는 앱의 정보를 받아 각각의 uid와 TrafficStats.getUidTxBytes() + TrafficStats.getUidRxBytes()를 사용했습니다.

앱별로 데이터 사용량을 구할수는 있지만, 제 경우 순간 CPU사용량이 약 5%정도 입니다.

혹시 데이터 사용량을 Receiver로 구현할 수는 없나요?

모든 실행중인 앱에 대하여 TrafficStats.getUidTxBytes() + TrafficStats.getUidRxBytes()를 계속 실행해서 속도가 느려진 것 같습니다.

실제로 해당 코드만 빼면 점유율이 0.5%미만으로 떨어집니다.

측정 방법은 초기에 현재 실행중인 앱리스트를 받아 ArrayList에 저장합니다.

이후 업데이트할 때마다 다시 실행중인 앱리스트를 갱신하고

앱리스트의 각 processName과 기존에 ArrayList에 저장한 processName을 비교하여 찾으면 데이터 사용량 변화를 측정하고, 못찾으면 새로 ArrayList에 앱정보를 추가하는 식으로 구현하였습니다.

이때문에 대략 앱리스트 * 앱리스트 만큼의 루프를 돌개 됩니다.

이 부분도 개선하고 싶은데 잘 되지 않네요....

물론 정확히 앱리스트 * 앱리스트만큼은 아닙니다. 검색되면 바로 break로 빠져나오게 하였습니다.

ArrayList에서 데이터베이스 형태로 자료를 검색하여 비교할 수는 없나요?

이게 가능하면 일단 루프수를 줄여 점유율을 줄일 수 있을 것 같습니다.
궁금이5 (740 포인트) 님이 2015년 10월 3일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...