【问题标题】:GPS stays on although app is moved to background on Android尽管应用程序在 Android 上移至后台,但 GPS 仍保持打开状态
【发布时间】: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


【解决方案1】:

这已经解决了。根本原因在react-native-mapbox-gl,4 天前有一个关于它的报告问题:https://github.com/mapbox/react-native-mapbox-gl/issues/310

【讨论】:

    猜你喜欢
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    • 2012-07-03
    • 2023-04-11
    相关资源
    最近更新 更多