gpt4 book ai didi

android - react native AppState 在 Android 上没有 'inactive' 状态

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:26:41 26 4
gpt4 key购买 nike

我正在尝试在用户离开应用程序之前更改用户界面(用户处于多任务 View 或切换到其他应用程序)。更具体地说,当用户离开应用程序时,我想添加带有应用程序 Logo 的全屏 View 。

为此我正在使用 AppState。

在 iOS 上,它按预期工作:在多任务 View 中,应用程序进入非 Activity 状态,一旦切换到其他应用程序状态,就会进入后台。当状态处于非 Activity 状态时,我仍然可以更改 UI。

但是,在 Android 上,状态要么是 Activity 的,要么是后台的。问题是在后台状态下我无法再更改 UI。

这是 Android 上的错误吗?如果没有,我有什么选择可以让它在 Android 上运行。

谢谢。

最佳答案

如果需要,您可以通过在 MainActivity.java 中添加一些代码来监听其生命周期事件来模拟与 iOS 相同的状态

//onResume = 'active'  
//onPause = 'inactive'
//onStop = 'background'

@Override
public void onResume() {
super.onResume();
ReactContext reactContext = getReactInstanceManager().getCurrentReactContext();
WritableMap params = Arguments.createMap();
params.putString("event", "active");

// when app starts reactContext will be null initially until bridge between Native and React Native is established
if(reactContext != null) {
getReactInstanceManager().getCurrentReactContext()
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
.emit("ActivityStateChange", params);
}
}

@Override
public void onPause() {
super.onPause();
ReactContext reactContext = getReactInstanceManager().getCurrentReactContext();
WritableMap params = Arguments.createMap();
params.putString("event", "inactive");

if(reactContext != null) {
getReactInstanceManager().getCurrentReactContext()
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
.emit("ActivityStateChange", params);
}
}

@Override
public void onStop() {
super.onStop();
ReactContext reactContext = getReactInstanceManager().getCurrentReactContext();
WritableMap params = Arguments.createMap();
params.putString("event", "background");

if(reactContext != null) {
getReactInstanceManager().getCurrentReactContext()
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
.emit("ActivityStateChange", params);
}
}

然后在你的 JS 中使用 DeviceEventEmitter 监听这些生命周期变化

const nativeEventListener = DeviceEventEmitter.addListener('ActivityStateChange',
(e)=>{
console.log(e.event);
})

关于android - react native AppState 在 Android 上没有 'inactive' 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40405533/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com