React native 响应本机,在应用程序退出前存储信息

React native 响应本机,在应用程序退出前存储信息,react-native,React Native,这有可能吗?我目前正在使用react native track player来流式播放音频文件,我希望能够在用户退出应用程序时存储最后位置,并在他们重新打开时恢复(例如,类似于Spotify的工作方式) 现在,我通过一个简单的间隔跟踪此信息: this.keepTime = setInterval(async () => { const state = await TrackPlayer.getState() if (state == TrackPlayer.STATE_PLAYI

这有可能吗?我目前正在使用
react native track player
来流式播放音频文件,我希望能够在用户退出应用程序时存储最后位置,并在他们重新打开时恢复(例如,类似于Spotify的工作方式)

现在,我通过一个简单的间隔跟踪此信息:

this.keepTime = setInterval(async () => {
  const state = await TrackPlayer.getState()
  if (state == TrackPlayer.STATE_PLAYING) {
    const ID = await TrackPlayer.getCurrentTrack()
    const position = await TrackPlayer.getPosition()
    await AsyncStorage.setItem(ID, String(position))
  }
}, 10000)
问题是,当我的应用程序移动到后台时,我需要清除间隔,否则它将崩溃。如果可能的话,我更希望只需要调用一次代码,而不是周期性地调用

我知道我可以在android上使用headless JS,但该应用程序是跨平台的,所以我的iOS用户体验会更少


有什么建议吗?

我想你可以使用
component willunmount()
函数来实现这一点。

你可以添加一个侦听器来获取位置,然后在它转到后台时记录位置

类应用程序扩展了React.Component{
状态={
appState:appState.currentState
}
componentDidMount(){
AppState.addEventListener('change',this.handleAppStateChange);
}
组件将卸载(){
AppState.removeEventListener('change',this.handleAppStateChange);
这是saveTrackPosition();
}
HandLeapStateChange=(nextAppState)=>{
if(nextapstate.match(/inactive | background/)和&this.state.appState==='active'){
这是saveTrackPosition();
}
this.setState({appState:nextapstate});
}
saveTrackPosition=()=>{
if(state==TrackPlayer.state\u PLAYING){
const ID=wait TrackPlayer.getCurrentTrack()
const position=wait TrackPlayer.getPosition()
等待AsyncStorage.setItem(ID、字符串(位置))
}
}

}
如果我在代码中手动退出应用程序,则会触发此命令,但如果我的应用程序被刷到关闭状态,则不会触发此命令。如果在卸载时调用
saveTrackPosition
?(见更新的代码)。真不敢相信我没有想过尝试这个,这正是我需要的。不过仅供参考,答案应该包含更多代码。这更像是一个注释,为了得到一个完整的答案,最好用一个更全面的代码示例来更新它。感谢并欢迎来到Stack Overflow!