Операция Android неправильно переопределена для задачи приложения
У меня есть приложение, которое имеет обычное поведение задачи для большинства действий, но у него также есть одно действие, которое необходимо запустить для задачи, которая его создала.
Эта деятельность запускается из пантомимы. Если другое приложение запускает действие, оно должно отображаться в той же задаче. Однако деятельность всегда заново связана с задачей ее применения. Это несмотря на явную настройку 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 ответ
Вы должны установить android:taskAffinity=""
в <activity>
тег в манифесте. Если вы этого не сделаете, Activity
будет по умолчанию taskAffinity
, что совпадает со всеми другими действиями в вашем приложении. Настройка taskAffinity
пустой строке говорит Android, что это Activity
не предпочитает быть в какой-то конкретной задаче.
Это не хорошо документировано, но taskAffinity
козыри большинства других настроек. Android всегда будет пытаться найти задачу с тем же taskAffinity
запустить Activity
в.