Javascript 如何防止Android操作系统在离开时关闭我的React本机共享扩展?

Javascript 如何防止Android操作系统在离开时关闭我的React本机共享扩展?,javascript,android,react-native,share-extension,Javascript,Android,React Native,Share Extension,每当我离开应用程序时,我的React原生Android应用程序扩展就会自动关闭(转到主页,切换应用程序)。这种行为在iOS上不存在,所以我相当肯定它与我的原生Android代码有关 熟悉Android开发的人知道如何解决这个问题吗 我研究了savedInstanceState,并将其包含在活动文件的onCreate方法中,但我不确定是否正确执行了该操作和/或是否需要添加其他内容 导入android.os.Bundle; 导入android.view.WindowManager; 导入com.fa

每当我离开应用程序时,我的React原生Android应用程序扩展就会自动关闭(转到主页,切换应用程序)。这种行为在iOS上不存在,所以我相当肯定它与我的原生Android代码有关

熟悉Android开发的人知道如何解决这个问题吗

我研究了savedInstanceState,并将其包含在活动文件的onCreate方法中,但我不确定是否正确执行了该操作和/或是否需要添加其他内容

导入android.os.Bundle;
导入android.view.WindowManager;
导入com.facebook.react.ReactActivity;
公共类ShareActivity扩展了ReactActivity{
@凌驾
受保护的字符串getMainComponentName(){
//这是AppRegistry用于启动共享视图的名称
返回“测试”;
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
this.getWindow().addFlags(WindowManager.LayoutParams.FLAG\u保持屏幕打开);
}
}
logcat显示了一些关于未持久化sessionId和win.mRemoveonExit=true的信息,但没有关于这些消息的任何文档

5205-5448/? E/CustomizedTextParser: getCustomizedText Rule is empty. mRuleMap={}
10935-11009/? E/PBSessionCacheImpl: sessionId[48094197094119864] not persisted.
1262-5461/? E/WindowManager: win=Window{8f906be u0 com.factrmobile/com.factrmobile.share.ShareActivity EXITING} destroySurfaces: appStopped=false win.mWindowRemovalAllowed=true win.mRemoveOnExit=true win.mViewVisibility=0 caller=com.android.server.wm.AppWindowToken.destroySurfaces:870 com.android.server.wm.AppWindowToken.destroySurfaces:851 com.android.server.wm.WindowState.onExitAnimationDone:5366 com.android.server.wm.-$$Lambda$01bPtngJg5AqEoOWfW3rWfV7MH4.accept:2 java.util.ArrayList.forEach:1262 com.android.server.wm.AppWindowToken.onAnimationFinished:2403 com.android.server.wm.AppWindowToken.setVisibility:551 
5205-5205/? E/OverviewCommandHelper: No closing app

有什么建议吗?

如果有人遇到这个问题,请检查您的AndroidManifest.xml并查看您定义活动的位置。确保您没有android:noHistory=“true”。默认值为false,请保持原样。

如果有人遇到此问题,请检查您的AndroidManifest.xml并查看您定义活动的位置。确保您没有android:noHistory=“true”。默认值为false,请保持原样。

您所说的“共享扩展”是什么意思?你是说你的应用程序中的一些图形组件吗?你的活动被杀了吗?如果是这样,在一个普通的应用程序中,答案是实现onSaveInstanceState和onRestoreInstanceState,但是考虑到RN的线程模型和同步的要求,我认为您实际上无法做到这一点。@例如,当您想要共享URL或照片时,请单击“共享”按钮,您的应用程序将显示为一个选项。这就是我所说的共享扩展。好的,一个UI元素。你的活动很可能会被杀死。在实际的本机应用程序中,这不会是一个问题,因为选择器是它自己的活动。或者可以实现onSaveInstanceState/onRestoreInstanceState。但由于在RN中对javascript的所有调用都是异步的,所以该解决方案将无法工作。我不知道你是否能在RN中解决这个问题,除非通过将javascript状态序列化到磁盘来实现一个自制的保存/恢复机制。我建议生活在这种差异之上。或者编写实际的本机代码,这样您就可以获得所有这些漂亮的操作系统功能。@GabeSechan但奇怪的是,我的MainActivity并没有在这些相同的情况下被杀死-只有我的ShareActivity也称为共享扩展。@GabeSechan我发现了问题。。。在我的AndroidManifest.xml中,我的android:noHistory属性设置为“True”。不管怎样,谢谢你的帮助!你所说的“股份延伸”是什么意思?你是说你的应用程序中的一些图形组件吗?你的活动被杀了吗?如果是这样,在一个普通的应用程序中,答案是实现onSaveInstanceState和onRestoreInstanceState,但是考虑到RN的线程模型和同步的要求,我认为您实际上无法做到这一点。@例如,当您想要共享URL或照片时,请单击“共享”按钮,您的应用程序将显示为一个选项。这就是我所说的共享扩展。好的,一个UI元素。你的活动很可能会被杀死。在实际的本机应用程序中,这不会是一个问题,因为选择器是它自己的活动。或者可以实现onSaveInstanceState/onRestoreInstanceState。但由于在RN中对javascript的所有调用都是异步的,所以该解决方案将无法工作。我不知道你是否能在RN中解决这个问题,除非通过将javascript状态序列化到磁盘来实现一个自制的保存/恢复机制。我建议生活在这种差异之上。或者编写实际的本机代码,这样您就可以获得所有这些漂亮的操作系统功能。@GabeSechan但奇怪的是,我的MainActivity并没有在这些相同的情况下被杀死-只有我的ShareActivity也称为共享扩展。@GabeSechan我发现了问题。。。在我的AndroidManifest.xml中,我的android:noHistory属性设置为“True”。不管怎样,谢谢你的帮助!