Android 如何在设备重新启动后保持后台地理位置运行[React native]

Android 如何在设备重新启动后保持后台地理位置运行[React native],android,react-native,background,geolocation,expo,Android,React Native,Background,Geolocation,Expo,我目前正在尝试制作一个获取用户地理位置的应用程序。 我希望我的地理位置在应用程序处于前台、应用程序被关闭以及设备重新启动后工作 目前,我的地理定位在前台工作,当应用程序被终止时,但我不知道如何在设备重新启动后保持任务的活动状态 我正在使用expo location Library获取地理位置,并使用expo任务管理器在应用程序被终止时保持获取活动 我听说过react native queue,但我不明白它给任务管理器添加了什么 当我的设备未连接到react本机服务器时(重新启动后),我正在使用h

我目前正在尝试制作一个获取用户地理位置的应用程序。 我希望我的地理位置在应用程序处于前台、应用程序被关闭以及设备重新启动后工作

目前,我的地理定位在前台工作,当应用程序被终止时,但我不知道如何在设备重新启动后保持任务的活动状态

我正在使用expo location Library获取地理位置,并使用expo任务管理器在应用程序被终止时保持获取活动

我听说过react native queue,但我不明白它给任务管理器添加了什么

当我的设备未连接到react本机服务器时(重新启动后),我正在使用http post请求进行调试

有人已经面临这个问题了吗

问题:如何在设备重新启动后保持后台地理位置运行

这是我的密码:

import React from 'react';
import { StyleSheet, Button, View, SafeAreaView, Text, Alert } from 'react-native';
import FlexTest from './Components/FlexTest'
import * as Location from 'expo-location'
import * as TaskManager from 'expo-task-manager'


const firstTask = 'background-location-task';

export default class App extends React.Component {


  async onPress (){
    const { status } = await Location.requestPermissionsAsync();
    if (status === 'granted') {
       Location.startLocationUpdatesAsync(firstTask, {
        accuracy: Location.Accuracy.Balanced,
      });
    }
    else{
      console.log("oups");
    }

  }
    

  render(){
    return (
      <View>
        <Button title ="PressMe" onPress = {this.onPress}/>
      </View>
      
    )
  }
 
}

TaskManager.defineTask(firstTask, ({ data, error }) => {
  if (error) {
    console.log(error.message);
    return;
  }
  if (data) {
    const { locations } = data;

    fetch('https://ptsv2.com/t/yoyoy/post', {
      method: 'POST',
      headers: {
        Accept: 'application/json',
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        loc: locations
      })
    });
    console.log("locations", locations);
    }
});

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    alignItems: 'center',
    justifyContent: 'center',
  },
});
从“React”导入React;
从“react native”导入{样式表、按钮、视图、安全区域视图、文本、警报};
从“./Components/FlexTest”导入FlexTest
从“世博会地点”导入*作为地点
从“expo任务管理器”导入*作为任务管理器
const firstTask='后台位置任务';
导出默认类App扩展React.Component{
异步onPress(){
const{status}=wait Location.requestPermissionsAsync();
如果(状态==‘已授予’){
Location.startLocationUpdatesAsync(第一个任务{
准确度:位置、准确度、平衡度,
});
}
否则{
控制台日志(“oups”);
}
}
render(){
返回(
)
}
}
TaskManager.defineTask(第一个任务,({data,error})=>{
如果(错误){
console.log(错误消息);
返回;
}
如果(数据){
const{locations}=数据;
取('https://ptsv2.com/t/yoyoy/post', {
方法:“POST”,
标题:{
接受:'application/json',
“内容类型”:“应用程序/json”
},
正文:JSON.stringify({
地点
})
});
控制台日志(“位置”,位置);
}
});
const styles=StyleSheet.create({
容器:{
弹性:1,
背景颜色:“#fff”,
对齐项目:“居中”,
为内容辩护:“中心”,
},
});