Android Activity 错误地重新定位到应用程序任务

Mat*_*ell 1 android android-manifest android-intent android-activity android-task

我有一个应用程序,它具有大多数活动的常规任务行为,但它也有一个需要启动到创建它的任务的活动。

该活动是从哑剧类型发起的。如果另一个应用程序启动该活动,则该活动应显示在同一任务中。然而,该活动始终会重新确定其应用程序任务的父级。尽管明确设置allowTaskReparenting为,但还是如此false

当应用程序中没有其他活动时,活动会在启动它的任务中正确启动。仅当任务中存在应用程序的其他活动时,它才重新确定父级。

如何让该 Activity 仅在启动它的 Activity 之上启动,与同一应用程序的其他 Activity 分开?以下是 AndroidManifest.xml 的相关部分:

<activity
    android:name="com.matthewmitchell.peercoin_android_wallet.ui.RestoreWalletActivity"
    android:configChanges="orientation|keyboard|keyboardHidden"
    android:theme="@style/My.Theme.Dialog"
    android:allowTaskReparenting="false" >
    <intent-filter android:label="@string/import_keys_intent_filter_action" >
        <action android:name="android.intent.action.VIEW" />

        <category android:name="android.intent.category.DEFAULT" />

        <data android:mimeType="application/x-peercoin-wallet-backup" />
        <data android:mimeType="application/octet-stream" />
    </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

Dav*_*ser 6

必须在清单中的标签android:taskAffinity=""中进行设置。<activity>如果不这样做,Activity将具有默认值taskAffinity,这与应用程序中的所有其他活动相同。将 设为taskAffinity空字符串会告诉 Android 它Activity不喜欢出现在任何特定任务中。

这没有详细记录,但taskAffinity胜过大多数其他设置。Android 总是会尝试找到具有相同功能的任务taskAffinity来启动Activity