博览会漏洞-崩溃后,Android后退按钮导致独立应用程序进入后台

时间:2018-12-10 19:10:56

标签: javascript android react-native expo create-react-native-app

我们遇到了一个问题,在应用程序“崩溃”并重新加载(用户被踢回到第一个屏幕)之后,每当用户按下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手机(或具有分屏功能的任何其他手机)上一致地重现它的一些步骤,这将导致应用程序重新加载:

  1. 打开应用。
  2. 点击任意标签可切换到其他屏幕(即“链接”)。按下Android后退按钮应将用户带回到“首页”标签。
  3. 从此处开始,通过长按位于设备底部(“后退”和“主页”按钮所在的位置)正方形图标来激活分屏功能。这将导致应用崩溃并重新加载。
  4. 通过将屏幕中心的黑色水平栏拖动到屏幕底部,退出拆分屏幕视图,从而使应用再次聚焦。这将再次导致应用程序崩溃并重新加载。 再次点击“链接”选项卡。
  5. 现在按Android后退按钮。该应用程序应最小化。

我尝试查看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上的主要问题似乎是导致应用程序被杀死的内存压力。

可能是一个反应性问题。

0 个答案:

没有答案