Android活动错误地重新生成应用程序任务

时间:2015-08-18 21:45:35

标签: android android-intent android-activity android-manifest android-task

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

此活动是从mime类型启动的。如果另一个应用程序启动该活动,则该活动应显示在同一任务中。但是,活动始终是其应用程序任务的重要组成部分。尽管明确将allowTaskReparenting设置为false

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

如何才能让活动仅在启动活动的顶部启动,与同一应用的其他活动分开?以下是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>

1 个答案:

答案 0 :(得分:2)

必须在清单中的android:taskAffinity=""标记中设置<activity>。如果您不这样做,Activity将具有默认taskAffinity,这与您应用中的所有其他活动相同。将taskAffinity设置为空字符串会告诉Android,此Activity并不喜欢处于任何特定任务中。

这没有详细记录,但taskAffinity胜过大多数其他设置。 Android将始终尝试使用相同的taskAffinity查找任务以启动Activity