Expo-Location后台任务在设备静止时返回陈旧位置数据的问题求助
Expo-Location后台任务在设备静止时返回陈旧位置数据的问题求助
各位大佬好!我现在在做Expo项目(用的是SDK 52),用expo-location的后台任务来上报位置数据,碰到个特别棘手的问题:当设备静止不动的时候,返回的位置数据完全是陈旧的,连时间戳都一直不变,根本不会更新。
我当前的后台任务配置代码如下:
const options_1: Location.LocationTaskOptions = { activityType: 2, accuracy: locationStore.accuracy === 'high' ? Location.Accuracy.BestForNavigation : Location.Accuracy.Balanced, timeInterval: thresholdInterval*1000, distanceInterval: thresholdDistance, deferredUpdatesDistance: thresholdDistance, deferredUpdatesInterval: thresholdInterval*1000, foregroundService: { killServiceOnDestroy: false, notificationTitle: 'Navigation Active', notificationBody: 'Your location is being tracked for navigation', notificationColor: '#1E88E5', }, showsBackgroundLocationIndicator: true, pausesUpdatesAutomatically: false, }; await Location.startLocationUpdatesAsync(LOCATION_TASK_1, options_1);
现在我陷入了一个两难的境地:
- 如果把
distanceInterval设为0,后台任务每秒都会返回更新后的位置数据,但这样耗电太严重,完全不符合我的需求 - 我本来想要的是两种触发条件满足其一就上报:要么移动了20米就上报,要么到了设定的时间间隔就上报(哪怕设备没移动),但现在设备静止时,时间间隔的触发完全没生效,数据一直停留在原地
- 我甚至试过创建两个后台任务,一个负责时间间隔触发,一个负责距离触发,但Expo-Location好像只会执行第一个注册的任务,第二个根本就没被调用到
有没有大佬能给我支个招,怎么才能同时满足这两个上报条件呀?
内容来源于stack exchange
相关产品推荐
相关产品推荐

