Android: PendingIntent из уведомления не запускает onCreate() , если возвращает активность на экран
думаю, у меня возникли некоторые misunderstandigs с намерением флаги.. То, что я пытаюсь сделать, это то, что у меня есть приложения для потоковой передачи радио, которые имеют два действия (PlayerApplication и SettingsScreen). У меня есть служба.класс для потоковой передачи, который работает в фоновом режиме, который также содержит уведомление (Вы можете остановить/запустить воспроизведение в меню Уведомления-наложения и PlayerApplication). Если пользователь нажимает на уведомление, PlayerApplicationActivity должен вернуться к экран.
все работает нормально, ожидайте случая: пользователь открывает SettingsScreenActivity - > открывает NotificationOverlayMenu - > нажимает на уведомление - > PendingIntent возобновляет PlayerApplicationActivity
теперь, PlayerApplicationScreen есть,но я не могу ничего щелкнуть. Я вижу, что onCreate () моей PlayerApplication не запускается, если я возобновляю из уведомления. Но макет выглядит отлично (также завышен в onCreate ())
я использовал следующие PendingIntent в Службе.класс:
PendingIntent contentIntent = PendingIntent.getActivity(
this.getApplicationContext(), //Service.class
0,
new Intent(this,PlayerApplicationActivity.class)
.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_SINGLE_TOP),
0);
поэтому на самом деле PendingIntent должен вернуть активность (если она уже запущена) наверх. Я использую неправильные намерения или я упускаю момент?
изменить: и я объявил launchMode в Манифесте.в XML
android:launchMode="singleTask"
2 ответов
согласно разработчику android сайт, в FLAG_ACTIVITY_CLEAR_TOP
,FLAG_ACTIVITY_SINGLE_TOP
и в режим запуска : SingleTask
, Если экземпляр действия, который вы вызываете, уже запущен, то вместо создания нового экземпляра он вызывает onNewIntent()
метод. Поэтому я думаю, что вы должны проверить это условие, что ваша активность выполняется, когда onCreate() не вызывает.
Я только что понял, что я делаю неправильно:
для моей цели я использовал неправильный launchMode. Правый
singleTop
неsingleTask
-
я объявил launchMode в
<application-node>
вместо<activity-node>
//Manifest.xml <activity android:name="..." android:launchMode="singleTop" >