通过单击应用程序图标(来自后台)打开时反应本机android应用程序重新启动

Posted

技术标签:

【中文标题】通过单击应用程序图标(来自后台)打开时反应本机android应用程序重新启动【英文标题】:react native android app restarts when opened by clicking app icon (coming from background) 【发布时间】:2021-04-30 01:04:06 【问题描述】:

我通过点击图标打开我的应用,做某事并转到另一个组件,通过点击主页按钮暂停应用。

如果我通过再次单击图标打开我的应用程序,应用程序将重新启动并运行第一个组件。

如果我从最近打开的应用程序中打开我的应用程序(在 4.0 中通过按菜单按钮并选择我的应用程序),应用程序将重新启动并进入第一个组件。

我希望行为 2 始终发生,不希望我的应用每次通过单击图标打开时都重新启动。

我希望我的应用只重启一次(当应用被终止时),另一次我的应用不重启。

我在谷歌搜索了很多次并获得了一些信息并设置但无法正常工作。

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="...">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.front" android:required="false" />

<application
  android:name=".MainApplication"
  android:label="@string/app_name"
  android:icon="@mipmap/ic_launcher"
  android:roundIcon="@mipmap/ic_launcher_round"
  android:allowBackup="false"
  android:theme="@style/AppTheme">
  <activity
    android:name=".MainActivity"
    android:launchMode="singleTop"
    android:label="@string/app_name"
    android:screenOrientation="portrait"
    android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
    android:windowSoftInputMode="adjustResize">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
  </activity>
  <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
</application>

我在清单文件中的活动是android:launchMode="singleTop",但对我不起作用! :(

我的反应原生应用信息:

"dependencies": 
    "@react-native-community/async-storage": "^1.11.0",
    "@react-native-community/clipboard": "^1.2.3",
    "native-base": "^2.13.8",
    "react": "16.9.0",
    "react-dom": "^16.9.0",
    "react-is": "^16.9.0",
    "react-native": "^0.61.5",
    "react-native-gesture-handler": "^1.5.1",
    "react-native-highcharts": "^1.0.2",
    "react-native-reanimated": "^1.4.0",
    "react-native-responsive-screen": "^1.3.0",
    "react-native-screens": "^2.16.1",
    "react-native-webview": "^7.6.0",
    "react-navigation": "^4.0.10",
    "react-navigation-drawer": "^2.3.3",
    "react-navigation-material-bottom-tabs": "^2.3.3",
    "react-navigation-stack": "^1.10.3",
    "react-navigation-tabs": "^2.6.0",
    "react-redux": "^7.2.1",
    "realm": "^10.1.2",
    "redux": "^4.0.5",
    "redux-persist": "^6.0.0",
  

【问题讨论】:

【参考方案1】:

可能有很多事情,我在一个项目中工作,我们使用了太多的设备内存,当用户在几秒钟内将应用程序置于后台时,应用程序被杀死,所以它可能是内存使用情况设备中的应用程序。在 android 文档中查看此页面。它更详细地讨论了android背景流程。

【讨论】:

感谢老兄的回答,但是当 ram 空闲时我的问题(后台没有应用程序并且所有应用程序都关闭)也发生了!这个问题发生在特殊设备上,不是所有的安卓设备:( 但是即使所有应用程序都关闭了,您的应用程序也可能被杀死。当您在这个“特殊”设备中运行其他应用程序时,它也会在后台被杀死?看看android的docs,讲后台限制。 谢谢我的朋友,但我知道该怎么做:(【参考方案2】:

将您的MainActivity 的启动模式替换为android:launchMode="singleTask"

【讨论】:

以上是关于通过单击应用程序图标(来自后台)打开时反应本机android应用程序重新启动的主要内容,如果未能解决你的问题,请参考以下文章

Stack Navigator 抽屉图标单击抽屉未打开但滑动打开时

通过应用程序图标打开时的 UILocalNotification 句柄?

应用打开时MainActivity跳转到栈顶

当应用程序从后台处于活动状态时,如何避免在本机反应中安装组件?

使用 Headless JS 进行本机反应的后台/前台服务

如何从 iOS 传递信息以在启动时做出本机反应?