我有一个应用程序,它对大多数活动都有通常的任务行为,但它也有一个活动需要启动到创建它的任务上。
此活动是从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>
答案 0 :(得分:2)
您必须在清单中的android:taskAffinity=""
标记中设置<activity>
。如果您不这样做,Activity
将具有默认taskAffinity
,这与您应用中的所有其他活动相同。将taskAffinity
设置为空字符串会告诉Android,此Activity
并不喜欢处于任何特定任务中。
这没有详细记录,但taskAffinity
胜过大多数其他设置。 Android将始终尝试使用相同的taskAffinity
查找任务以启动Activity
。