zid*_*ryi 4 javascript android react-native
当应用程序被用户杀死时,我想从 API 更改状态数据。
我曾尝试使用 componentWillUnmount 在应用程序关闭时更改数据,我也使用 AppState
_handleAppStateChange = (nextAppState) => {
if (
this.state.appState.match(/inactive|background/) &&
nextAppState === 'active'
) {
console.log('App has come to the foreground!')
}
this.setState({ appState: nextAppState })
}
Run Code Online (Sandbox Code Playgroud)
我希望当应用程序被用户杀死时,它可以自动更改状态。
nextAppState === 'inactive'或检查是否background不会告诉您应用程序是否被“杀死”(刷出)。
因为当原生层被杀死时,javascript 引擎也会被杀死。所以没有办法告诉 javascript 该应用程序已被杀死。
如果您只想在应用程序被终止后初始化某些内容,您可以在内部 constructor 或componentDidMount基础组件中触发一些函数,您知道它只会为您的应用程序安装一次。
补充:现在我们可以(可能更喜欢)使用useEffect(()=>{}, [])代替上面的例子。
如果您真的想确保该应用程序之前被杀死,也许您可以将其存储nextAppState到某个持久存储中并检查该值是否匹配 inactive 或 background 之一,因为应用程序状态不会在应用程序初始启动时更改。
尝试这个 :
componentDidMount() {
AppState.addEventListener('change',
this.handleAppStateChange);
}
componentWillUnmount() {
AppState.removeEventListener('change', this.handleAppStateChange);
}
handleAppStateChange = (nextAppState) => {
if (nextAppState === 'inactive') {
console.log('the app is closed');
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7812 次 |
| 最近记录: |