gpt4 book ai didi

android - 通过不同的 Intent 访问时如何处理应用程序的多个实例

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

我刚刚为用户添加了通过备份自定义文件类型来恢复他们在我的应用程序中的数据的功能。当使用我的应用程序从文件资源管理器打开文件时,我的根(主要) Activity 被打开,但在一个新实例中。例如,如果我的应用程序已打开并且恢复文件是从文件资源管理器中打开的,则我的应用程序的一个新实例将在我的根 Activity 中打开。在 android 的任务管理器中,这看起来像是我的应用程序在文件资源管理器中运行,如果这有意义的话。由于恢复过程会更改用户数据,因此我的应用程序的原始实例可能会停止运行,因为它处于依赖于数据的 Activity 中。

当我的应用程序通过不同的 Intent 访问时,如何防止它出现多个实例?谢谢。

更新:我四处搜索,仍然找不到解决方案。帮助将不胜感激。

list 中我的根 Activity 的 intent-filter:

<manifest
android:launchMode="singleInstance"
...
<application
android:... >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="file" android:pathPattern=".*\\.grdcsv" android:mimeType="*/*" android:host="*"/>
</intent-filter>

<!-- For email attachments -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/octet-stream" android:pathPattern=".*\\.grdcsv" android:scheme="content" />
</intent-filter>

最佳答案

How can I prevent multiple instances of my app when it is accessed via a different intent like this?

你可以尝试使用android:launchMode="singleTask"在 list 中的 Activity 声明中。如果你看到文档,它会说:

The system creates the activity at the root of a new task and routes the intent to it. However, if an instance of the activity already exists, the system routes the intent to existing instance through a call to its onNewIntent() method, rather than creating a new one.

这可能不会像您在问题中提到的那样创建新实例。试试看。如果您仍然遇到同样的问题,请告诉我。

关于android - 通过不同的 Intent 访问时如何处理应用程序的多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27097362/

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