【发布时间】:2016-03-21 08:37:02
【问题描述】:
虽然我的 React Native 应用程序已移至后台,但我的 GPS 仍处于开启状态并不断轮询存在问题。这在 iOS 上运行正常,但在 Android 上没有任何反应。
代码如下:
componentDidMount() {
const { dispatch } = this.props
navigator.geolocation.getCurrentPosition((initialPosition) => {
dispatch(setUserLocation(initialPosition.coords))
this.setState({
locationError: false,
position: initialPosition
})
}, (error) => {
this.setState({
locationError: true
})
}, {
enableHighAccuracy: true,
timeout: 20000,
maximumAge: 1000
})
this.startWatchingPosition()
}
startWatchingPosition() {
this.watchID = navigator.geolocation.watchPosition((lastPosition) => {
if (this.state.position) {
let distance = geolib.getDistance(this.state.position.coords, lastPosition.coords)
if (distance > 250) {
this.setState({
locationError: false,
position: lastPosition
})
dispatch(setUserLocation(lastPosition.coords))
}
}
else {
this.setState({
locationError: false,
position: lastPosition
})
}
})
}
stopWatchingPosition() {
navigator.geolocation.clearWatch(this.watchID)
navigator.geolocation.stopObserving()
}
stopWatchingPosition() 在AppState 等于背景 时执行。这被证明是可行的,它实际上在 iOS 和 Android 上都被调用了。但由于某种原因,Android 失败了。
我在 SO 上找不到任何类似的问题,在 RN 上也没有未解决的问题。
【问题讨论】:
-
我还没有研究过 react native,但是在 android SDK 中你可以禁用检查位置更新
onPause方法。
标签: android gps geolocation react-native