-
Guide to background processingAndroid/AndroidStudio 2018. 6. 30. 23:51
https://developer.android.com/guide/background/
이 페이지에서는 어플의 성능을 저하시키지 않으면서 당신의 어플이 백그라운드에서 작업을 수행할 수 있도록 도와 줄 것이다.
모든 안드로이드 어플은 UI를 담당하는 메인 스레드를 가지고 있으며,( 뷰들을 측정하고 그리는 작업을 포함한다 ), 또는 사용자간의 상호작용을 조절하거나, 생명주기와 관련된 이벤트들을 받는다. 만약 이 메인스레드에 너무 많은 작업들이 일어나면, 머플을 매우 느려져보인다. 이는 사용자들에게 불만족스러운 사용자 경험을 경험하게 한다. 시간이 많이 걸리는 계산작업이나 비트맵, 디스크 관련 그리고 네트워크가 요구되는 일들은 백그라운드의 독립된 스레드에서 수행되어야 한다. 일반적으로 수 밀리초 이상의 일들은 백그라운드 스레드로 분리되어야 한다.
메인스레드에서 작업을 할것을 고려할때는 다음 세가지 사항을 고려해야한다.
- 작업을 연기 할 수 있거나 혹은 작업이 스케쥴링되면 바로 수행되어야 하는가? 예를 들어, 사용자가 버튼을 클릭한 것의 응답으로 네트워크에서 일정 데이터를 패치할 필요가 있다면, 그 작은 바로 수행되어야 할 것이다. 하지만, 당신의 로고를 서버에 올리고자 한다면, 그 작업은 어플의 성능이나 사용자의 기대치에 영향을 주지 않으면서 해당 작업을 연기 할 수 있습니다.
- 작업이 시작된다면, OS가 어플의 프로세스를 유지하려고 하는가? 예를들어 비트맵이미지를 디코딩하거나 표현하는 것은 어플의 포그라운드에 있거나 프로세스가 살아있는 동안에 일어날 필요가 있다. 하지만, 뮤직 플레이어는 어플이 사용되지 않거나 백그라운드에 있을 때에도 음악을 실행해야 합니다.
- 작업이 시스템의 트리거에 의해서 시작되었는가? 이러한 트리거는 네트워크 상태, 배터리상태, 저장공간 레벨 등등의 것이다. 예를 들어, 당신의 비행기모드가 끝날 때까지 당신의 서버와 통신하는 것을 멈추고 싶을 것이다. 이러한 상황에서, 어플의 프로세스가 죽는다면,
ThreadPools
어플이 포그라운드 상태에 실행되어야 하는 작업이라면 ThreadPools를 사용하세요. ThreadPools은 제출된 작업을 인큐하거나 수락하는 백그라운드 스레드 그룹을 제공합니다. 만약 시스템 트리거를 모니터할 필요가 있다면
..해석중
'Android > AndroidStudio' 카테고리의 다른 글
안드로이드 thread와 handler (0) 2018.07.07 Android Guideline (0) 2018.07.02 Thread (0) 2018.07.01 Fragment (0) 2018.06.21 서비스로 명령 전달 (1) 2018.06.20