일상&개발 로그

[PerformancePatterns] Service 올바르게 사용하기 본문

개발/안드로이드 개발

[PerformancePatterns] Service 올바르게 사용하기

dskim98 2017. 5. 18. 20:00

1. 서비스는 UIThread에서 동작하기 때문에 서비스 작업때문에 프레임 누락이 발생할 수 있다.



2. 서비스를 되도록이면 쓰지마라. GCM이나 BroadcastReceiver를 이용해서 업데이트하던가 아니면 IntentService, 

    HandlerThread, AsyncTaskLoader를 사용해라



3. Service에는 StartedService와 BoundService가 있다.

# StartedService는 startService-stopService(or stopSelf)로 이루어졌으며 종료시키기 전까지 

   계속 살아남아 리소스를 잡아먹는다.

# BoundService는 unbind되거나 종료시키기 전까지 리소스를 잡아먹는다.

# 두 가지 서비스를 섞어쓰면, unbindService()를 호출해도 stopService()를 기다리며 살아남는다.



4. Systrace라는 시각적인 툴로 앱&서비스의 동작을 분석할 수 있다.








# IntentService - 서비스를 실행시킨 뒤 MessageQueue에 작업을 쌓아놓고 하나씩 처리한다. 

        모든 작업이 끝나면 서비스를 종료한다.

# HandlerThread - Looper를 가지고있는 Thread.

# AsyncTaskLoader - AsyncTask와 유사하나 UI와 백그라운드 처리를 분리시켜놓음. 

       백그라운드 작업은 AsyncTaskLoader를 상속한 클래스에서 하고 UI작업은 LoaderCallback을 

       구현한 Activity에서 처리한다.




동영상 링크: 

https://www.youtube.com/watch?v=NJsq0TU0qeg&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&index=6


'개발 > 안드로이드 개발' 카테고리의 다른 글

[PerformancePattern] Enum  (0) 2017.05.23
[PerformancePattern] ArrayMap vs HashMap  (0) 2017.05.22
Gradle 라이브러리 충돌 시 대처방법  (0) 2017.05.12
Dynamic APK Loading Research  (0) 2017.05.10
AsyncTask 특징  (0) 2017.04.24
Comments