我在 Android 上遇到了一点痛苦。我有两个 Activity ,一个是启动画面,当您单击应用程序图标时启动,另一个可以在特定事件发生时唤醒(NFC 事件,但这不是问题)。
list 中有声明:
<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 上恢复应用程序,就像事件已经发生一样。那么您是否知道一种仅在一个选定 Activity (在我的例子中是 SplashScreen)上恢复应用程序的方法。 或者您是否知道一种方法来识别应用程序是由多任务功能恢复的? (如果我得到这些信息,我也可以在我的 EventReceiver 的 onCreate 上打开好的 Activity )。
目前,我找到的唯一解决方案是在我的 EventReceiver Activity 上放置一个 android:excludeFromRecents="true"标志。如果应用程序是由事件启动的,这将导致应用程序不会出现在多任务表中。但这有点棘手,我不太喜欢那样。
你有什么想法吗?
非常感谢您的回答! (对不起我的学者英语^^)
最佳答案
如果您真的必须检测应用程序何时从“最近”启动,您可以使用 Intent 标志。
if (getIntent().getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) {
// Lauched from recent apps.
}
关于android - 我怎样才能将一项 Activity 设置为要恢复的 Activity (通过多任务),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11152661/