Вопрос

Я знаю, что было несколько постов для того, что я собираюсь спросить, но я не могу найти ни одного с правильным ответом.

Насколько я понимаю, если ваша основная деятельность (давайте назовем это A) Launchmode установлен в Singletask, и A инициировала действие B, то нажмите кнопку «Домой» разрушит стек истории и повторный запуск приложения вернет вас к а не Б.

У меня есть запуск, установленная в Singletask, потому что у меня есть постоянное уведомление, и я не хочу, чтобы несколько экземпляров основной деятельности появлялись всякий раз, когда пользователь нажимает на уведомление.

Есть ли что -то, что мне не хватает, что позволило бы мне обслуживать обоих?

Поэтому я спрашиваю, есть ли я, чтобы я мог убедиться, что всякий раз, когда пользователь хочет запустить приложение, из уведомления или нет, чтобы вернуть его к последней (текущей) деятельности.

Если я переведю запуск в Singletop, он работает, но я получаю несколько экземпляров основной деятельности, когда запускаю его.

Спасибо

Андреас

Это было полезно?

Решение

Пробовали ли вы установить запуск в Singletop для всех действий в вашем приложении ?? Потому что из вашего запроса я получаю то, что основная деятельность не является одиночным, так что это может привести к другому примеру основного действия, называемого после того, как основная деятельность будет запущена из деятельности, которая была запущена из уведомления.

Или вы можете указать LaunchMode как атрибут самого тега приложения в манифесте.

Другие советы

Я использую следующий код, чтобы избежать нескольких экземпляров деятельности

Intent intent=new Intent(this,RICO.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, 0);

Изменение манифеста мне не подходит

У меня проблемы с обоими подходящими. Уведомление работает безупречно только в этом условии: - Использование кнопки «Назад» в основной деятельности (с историей, содержащей только эту деятельность) - не используя кнопку «Домой» - не используя уведомление, если активность, которую вы вызывает, является сверху и активным

В любом другом случае уведомление больше не может вызовать на переднем плане деятельность, используя «Новое намерение (...)»

Я нашел алхимическую комбинацию вариантов манифеста и флажков намерения для получения того, что мне нужно:

Intent intent= new Intent(this, YaampActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

Используя эти варианты

android:launchMode="singleTask"
android:taskAffinity=""
android:excludeFromRecents="true"

внутри элемента.

Теперь у меня есть уведомление, которое порождает основную деятельность (если это действие еще не находится на переднем плане), и ее поведение верно, даже если деятельность «закрыта», нажав кнопку «Домой» и/или заднюю.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top