我正在实施一种解决方案来跟踪我的应用程序中的位置更新,包括前台和后台,并在位置更新时执行一些任务。
根据https://developers.google.com/android/reference/com/google/android/gms/location/FusedLocationProviderClient#requestLocationUpdates(com.google.android.gms.location.LocationRequest,%20android.app ) 中的 Google 建议.PendingIntent),我使用了 requestLocationUpdates API 的 PendingIntent 变体。
更改位置时执行任务的最佳方式是什么?
根据 Google 示例https://github.com/googlesamples/android-play-location/tree/master/LocationUpdatesPendingIntent,位置更改时要执行的任务在广播接收器的 onReceive() 中完成。这种方法不处理唤醒锁和设备背景限制。
根据我在浏览各种stackoverflow答案和不同博客后的理解,我必须使用JobIntentService。
使用 JobIntentService 是满足我要求的正确方法
当位置更改时,当设备处于睡眠模式时,应用程序是否需要获取唤醒锁才能执行任务(我知道 JobIntentService 会自动处理唤醒锁)。
当系统回调如 onlocationChanged(),onReceive() 的 BroadcastReceiver() 被调用时,当设备处于睡眠模式时 CPU 会自动唤醒。如果被唤醒,它将激活多少时间?它是否等待回调完成。