Я испытываю странное поведение с моим приложением Android при работе с уведомлением, которое создается из BroadcastReceiver, когда сообщение C2DM поступает на мобильное устройство. Поток, который я выполняю, чтобы испытать это поведение, следующий:Действия странное поведение при запуске с Android Notification
- Запуск приложения, отображается панель инструментов;
- Закройте приложение, нажав кнопку «Главная» или «Назад»;
- Получите сообщение push и создайте уведомление;
- Нажмите на элемент уведомлений и запустится мероприятие BookingOfferActivity;
- Закройте BookingOfferActivity либо нажав дома или кнопку возврата или вызова
- Длительное нажатие кнопки домой отделка() и выберите мое приложение из недавних приложений
- BookingOffcerActivity отображается вместо DashboardActivity
BookingOfferActivity является начиная с уведомления, используя следующий код:
Intent notificationIntent = new Intent(context, BookingOfferActivity.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Bundle b = new Bundle();
b.putSerializable("booking", booking);
notificationIntent.putExtras(b);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
Notification notification = new Notification(icon, tickerText, when);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
long[] vibrate = {0,100,200,300};
notification.vibrate = vibrate;
notification.flags = Notification.FLAG_AUTO_CANCEL;
NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(AppUtil.getNextPushIndexBooking(), notification);
BookingOfferActivity определен в A ndroidManifest таким образом:
<activity android:name=".activity.BookingOfferActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" />
и мой DashboardActivity определяется следующим образом:
<activity android:name=".activity.DashboardActivity"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden"
android:windowSoftInputMode="stateHidden|adjustPan">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Причина я называю это странное поведение, что я хотел бы начать DashboardActivity всякий раз, когда мое приложение запускается или перезагружается пользователем, а не элементом уведомления. Таким образом, после закрытия, завершения или уничтожения BookingOfferActivity и повторного открытия приложения путем доступа к недавно открытому приложению (долгое нажатие на домашней кнопке) или доступа к значку запуска в списке приложений, мне бы хотелось увидеть панель мониторинга.
Я создаю вопрос, похожий на этот, но я не предоставлял слишком много деталей, поэтому я закрыл другой и открыл его с большим количеством данных.
Большое спасибо за каких-либо указаний о том, как решить эту проблему
T
Hi @ Jin35, я реализовал вашу идею, это кажется мне прекрасным, но как я могу удалить вторую активность из верхней части стека действий после ее завершения? Кажется, что активность будет там, даже если я нажму кнопку «домой» или «назад». Должен ли я использовать для этого какой-то флаг? Благодарим вас за – Thiago
, если вы назовёте завершение() для второго действия, оно будет удалено из стека действий. – Jin35
Это то, что я делаю, когда я закончил со вторым действием, которое я вызываю finish(), но активность всегда находится на вершине стека. Я попытался запустить второе действие с помощью Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP и NO_HISTORY, но он не работал в обоих направлениях. У меня вроде как альтернатива. Спасибо за помощь. – Thiago