我在Android上遇到了一点痛苦。我有两个活动,一个是启动屏幕,当您单击应用程序图标时启动,另一个可以在发生特定事件时唤醒(NFC 事件,但这不是问题)。
清单中有声明:
<activity android:label="@string/general.appName" android:name=".activity.SplashActivity" android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:excludeFromRecents="true" android:label="@string/general.appName" android:name=".EventReceiver" android:noHistory="true" android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.nfc.action.TRANSACTION_DETECTED">
</action>
<category android:name="android.intent.category.DEFAULT">
</category>
<data android:host="secure" android:path="/aXXXXX" android:port="0" android:scheme="nfc"/>
</intent-filter>
</activity>
一切正常,这意味着 EventReceiver 在收到特定事件时启动,启动画面正常运行等......但是,当应用程序由事件启动时,首先启动的是 EventReceiver。如果我通过单击手机的主页按钮暂停应用程序,然后再次长按它,它会出现多任务表,其中包含所有最近打开的应用程序。在那里,如果我单击我的应用程序,它会在 EventReceiver 上恢复应用程序,就像发生事件一样。那么您知道一种仅在一个选定活动上恢复应用程序的方法(在我的例子中是 SplashScreen)。或者你知道一种方法来识别应用程序是由多任务功能恢复的吗?(如果我得到这个信息,我也可以在我的 EventReceiver 的 onCreate 上打开好的活动)。
目前,我找到的唯一解决方案是在我的 EventReceiver 活动上放置一个 android:excludeFromRecents="true" 标志。如果应用程序是由事件启动的,这将导致应用程序不会出现在多任务表中。但这有点棘手,我不太喜欢。
你有什么想法 ?
非常感谢您的回答!(对不起我的学者英语^^)