Ответ 1
Несмотря на то, что вы используете 2 разных приложения, он будет работать в ожидаемом пути:
- Если ваша операция
singleTask
уже существует, эта копия будет использоваться с методомonNewIntent()
, который называется - если он не существует, он будет запущен как обычно
Более технически, воспроизводя определение из вашей ссылки:
Система создает новую задачу и создает активность на корень новой задачи. Однако, если экземпляр активности уже существует в отдельной задаче, система направляет существующий экземпляр посредством вызова его метода onNewIntent(), скорее чем создание нового экземпляра. Только один экземпляр мероприятия может существуют за один раз.
Это легко проверить с помощью чтобы сделать задачу целью обмена текстом и singleTask
в манифесте:
<activity
android:name=".MainActivity"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
</intent-filter>
</activity>
Теперь добавьте несколько протоколов в методы onCreate()
и onNewIntent()
и выполните некоторые сценарии тестирования.
Что-то, что я нашел особенно полезным при тестировании различных макетов запуска, - это следующая команда ADB:
-
adb dumpsys activity activities
Это выводит много текста (это может помочь перезагрузить телефон перед тем, как сделать это - adb reboot
), в котором указаны детали стеков задач деятельности. Это можно использовать, чтобы показать вам, что ваша деятельность singleTask
"воссоздает" себя, когда она запускается через разные приложения.
Что касается вопроса о письмах, я думаю, что это будет зависеть от того, какой почтовый клиент вы используете, но я надеюсь, что они будут корректно обрабатывать метод onNewIntent()
и сохранить текущий черновик перед отображением вашего нового сообщения.