我们遇到了一个问题,在应用程序“崩溃”并重新加载(用户被踢回到第一个屏幕)之后,每当用户按下Android后退按钮时,该应用程序就会进入后台。我能够使用Expo 31 SDK上CRNA提供的默认“标签”项目(链接:https://exp-shell-app-assets.s3.us-west-1.amazonaws.com/android/%40allen.lin/split-screen-poc-c25e728a483c4c71ba9109ac70a93ef1-signed.apk 1)来重现此项目,而无需添加其他代码。当前的解决方法是让用户打开应用切换器并杀死并重新打开应用。
以下是在Google Pixel 2手机(或具有分屏功能的任何其他手机)上一致地重现它的一些步骤,这将导致应用程序重新加载:
我尝试查看ADB Logcat,但是日志中有太多噪音。但是,当我将日志记录为“例外”时,确实出现了一行:
12-05 16:03:07.137 23448 23448 E j : Runtime exception in RNObject when calling method getCurrentReactContext: java.lang.NullPointerException: null receiver
我还看到按下后退按钮时对moveTaskToBack()的一些调用。
请注意,这未链接到Android设备上的“分屏”功能。我的一位同事能够在我们的主要Expo应用(SDK 30)中在他的XiaoMi A1M1设备(运行Vanilla Android 8.1.0,他在Android One程序上)上重现此内容。他的设备没有分屏功能,但他仍然看到了此问题。我认为我们的实际应用可能由于某些代码问题而在他的设备上崩溃了。
这是世博会的已知问题吗?是否有解决方法来避免出现Android后退按钮问题?
编辑:世博会工程师在https://github.com/expo/expo/issues/1786处对其进行跟踪。 Android上的主要问题似乎是导致应用程序被杀死的内存压力。
可能是一个反应性问题。