2011-12-14 3 views
0

Я испытываю странное поведение в своем приложении для Android. Когда я открываю приложение, я вижу свою DashboardActivity, затем я нажимаю кнопку «Главная» или «Назад», и мое приложение закрывается. Хорошо. Затем я получаю push-сообщение, и с этим push-сообщением я создаю уведомление. Уведомление работает отлично, я нажимаю на уведомление, и это открывает свою деятельность, используя код ниже:Деятельность не закрывается после запуска моего уведомления

Intent notificationIntent = new Intent(context, BookingOfferActivity.class); 
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
Bundle b = new Bundle(); 
b.putSerializable("booking", booking); 
notificationIntent.putExtras(b); 

PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0); 

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

Я попробовал решение, предложенное здесь:

Prevent new activity instance after clicking on notification

, но это просто не работает.

Есть ли способ заставить мое приложение всегда открываться в DashboardActivity?

Благодаря

T

ответ

0

Это странное поведение, учитывая вы вызываете отделку()

Попробуйте установить

android:noHistory="true" 
android:launchMode="singleInstance" 

в манифесте для BookingOfferActivity

+0

Привет @triggs, я просто это, что вы сказали, он не работал. После того, как вы закончили() на моем BookingOfferActivity и снова открыли мое приложение, активность все еще существует. Спасибо, что пытались мне помочь! – Thiago

+0

очень странно, возможно, вам стоит отредактировать свой вопрос с помощью некоторого кода из вашего режима бронированияOfferActivity, также попробуйте удалить CLEAR_TOP из уведомленияIntent – triggs

0

я не знаю точно, но и может попытаться завершить все мероприятия в OnStop() метод. в методе onResume() начните свою DashboardActivity.

0

Попробуйте удалить SINGLE_TOP из вашего намерения. CLEAR_TOP должен быть всем, что вы хотите.

Из документации разработчика Android

FLAG_ACTIVITY_SINGLE_TOP -> Если установлено, активность не будет запущен, если она уже работает на вершине стека истории.

+0

Hi Lionel, все еще не работая с вашим ответом. Я все еще пытаюсь понять, почему это происходит. еще раз спасибо – Thiago