尽管应用程序在 Android 上移至后台,但 GPS 仍保持打开状态
Posted
技术标签:
【中文标题】尽管应用程序在 Android 上移至后台,但 GPS 仍保持打开状态【英文标题】:GPS stays on although app is moved to background on Android 【发布时间】: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
方法。
【参考方案1】:
这已经解决了。根本原因在react-native-mapbox-gl
,4 天前有一个关于它的报告问题:https://github.com/mapbox/react-native-mapbox-gl/issues/310
【讨论】:
以上是关于尽管应用程序在 Android 上移至后台,但 GPS 仍保持打开状态的主要内容,如果未能解决你的问题,请参考以下文章
尽管 content_available = true,但没有在后台调用 didReceiveRemoteNotification