[번역] [Android O Preview] Background Location Limits

Background Location Limits

Power 소모를 줄이기 위해, Android O 개발자 Preview는 App의 Target SDK Version과 관계 없이 사용자의 현재 위치를 검색할 수 있는 빈도를 제한한다.
이 위치 검색은 만약 앱이 background에서 수행되는 동안 실시간 Alert과 모션인식에 의존한다면, 계속 유의해야 한다. 
중요: 백그라운드 앱이 매시간마다 몇번 위치 업데이트를 받을 수 있도록 허용중이다. 개발자의 피드백과 시스템 영향을 기반으로 Preview를 통해 위치 업데이트 간격을 조정중이다.
시스템은 background앱과 foreground앱을 구분한다. 앱은 아래의 조건중 하나라도 참일때 foreground로 간주된다.
  • 액티비티가 started혹은 paused이더라도 하나의 보여지는 activity를 가지고 있다. 
  • 하나의 foreground service를 가지고 있다.
  • 또 다른 Foreground 앱이 이 앱의 서비스중 하나에 binding되었거나, 이 앱의 Content Provider중 하나를 사용하여 연결되었다. 
만약에 이 조건들 중 true가 되는 것이 없다면, 그 앱은 background 앱으로 간주된다.

Foreground app behavior is preserved


If an app is in the foreground on a device running Android O, the location update behavior is the same as on Android 7.1.1 (API level 25) and lower.
만약 앱이 Android O 단말에서 foreground라면 위치 업데이트는 Android 7.1.1 이하에서와 동일하다. 
Warning: 만약 앱이 오랜 시간동안 실시간 위치 업데이트에 가까운 검색을 한다면, 단말의 배터리 수명이 크게 단축된다.

Tuning your app's location behavior


백그라운드에서 실행되는 앱의 Use Case에서 위치업데이트가 자주 발생하지 않는 경우 문제가 있는지 고려하라. 만약 그런 경우, 아래 작업중 하나를 수행해서 위치 업데이트를 좀 더 자주 검색할 수 있다:
  • 앱을 foreground로 만들어라.
  • 앱에서 foreground service 를 사용해라. 이 서비스가 활성화 되면, 앱은 notification area에 ongoing notification으로 보여야 한다.
  • Geofencing API의 요소들을 사용해라. GeofencingApi interface는 전력 사용 최소화에 최적화 되어있다.
  • Foreground 앱이 좀 더 빠른속도로 위치를 요청할 경우 수동적인(passive) location listener를 사용해라. 
Note: 앱에서 시간이 오래걸리는 업데이트가 포함된 위치 기록에 액세스 해야하는 경우, FusedLocationProviderApi 인터페이스와 같은 Fused Location Provider API를 사용하라. 앱이 백그라운드에서 실행될때, 이 API는 일괄처리 되지 않은 API보다 더 빈번하게 사용자의 위치를 받는다. 명심할 점은, 앱은 여전히 매 시각마다 오직 몇번의 업데이트를 받는다.

영향받는 APIs


백그라운드 앱의 위치검색 동작이 변경되면 아래 API들에 영향을 준다:
Fused Location Provider (FLP)
  • 만약 앱이 백그라운드에서 실행된다면, 위치 시스템 서비스는  앱을 위해서 시간당 오직 몇번만(Android O Behavior 변경에 정의된 간격에 따라) 새로운 위치를 계산한다.  이것은 앱이 좀더 빈번하게 위치 업데이트를 요청할때도 마찬가지이다.
  • If your app is running in the foreground, there is no change in location sampling rates compared to Android 7.1.1 (API level 25).
Geofencing
  • 백그라운드 앱은 Fused Location Provider의 업데이트보다 Geofencing Transition 이벤트를 좀 더 빈번하게 받을 수 있다.
GNSS Measurements and GNSS Navigation Message
Location Manager
  • 위치 업데이트는 백그라운드 앱에게 시간당 오직 몇번의(Android O Behavior 변경에 정의된 간격에 따라) 업데이트만 제공한다. 
    Note: 만약 Google Play Service가 설치된 단말에서 앱을 실행한다면, Fused Location Provider (FLP)를 사용하는 것을 추천한다

댓글

이 블로그의 인기 게시물

[Android] DataBinding의 동작방식 - 4. include Tag 혹은 ViewStub 사용시의 Binding

[Android] Retrofit2, OkHttpClient Method 정리

[Android] Layout별 성능 비교[Measure 호출횟수 비교] (LinearLayout vs RelativeLayout vs ConstraintLayout)