Активность перезапускается при нажатии на уведомление — Android

У меня есть активность, которая воспроизводит музыку и показывает уведомление

    PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, Intent.FLAG_ACTIVITY_NEW_TASK );
            mBuilder.setContentIntent(pendingIntent);
  mNotificationManager =
                    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    final int mId = 1;
            mNotificationManager.notify(mId,mBuilder.build());

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

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

android:launchMode="singleTop" 

это тоже не помогло, есть идеи? Спасибо!


person user2529058    schedule 29.06.2013    source источник
comment
что вы просто хотите нажать на уведомление, и оно исчезнет, ​​вот и все?   -  person JRowan    schedule 29.06.2013
comment
когда я нажимаю на уведомление, я хочу, чтобы действие, вызвавшее уведомление, открывалось там, где оно было остановлено, а не перезапускало весь медиаплеер и снова воспроизводило песню, пока она уже играет в фоновом режиме.   -  person user2529058    schedule 29.06.2013
comment
PendingIntent.FLAG_UPDATE_CURRENT в вашем ожидающем намерении, я думаю, где у вас есть flag_activity_new_task   -  person JRowan    schedule 29.06.2013
comment
использовать android:launchMode=singleTask   -  person stinepike    schedule 29.06.2013
comment
FLAG_UPDATE_CURRENT не может быть разрешен или не является полем :o?   -  person user2529058    schedule 29.06.2013
comment
android:launchMode=singleTask по-прежнему создает новую активность   -  person user2529058    schedule 29.06.2013
comment
это было просто предположение из другого поста, который я видел, я никогда не пробовал, он сказал, что PendingIntent.FLAG_UPDATE_CURRENT не просто FLAG_UPDATE_CURRENT StinePike, вероятно, прав   -  person JRowan    schedule 29.06.2013
comment
Трюк со StinePike не работает, и pendingintent.FLAG_UPDATE_CURRENT нуждается в операторе присваивания! на что мне его назначить?   -  person user2529058    schedule 29.06.2013
comment
это должно работать именно так, это как у вас PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, намерение, PendingIntent.FLAG_UPDATE_CURRENT);   -  person JRowan    schedule 29.06.2013
comment
:( нет! не работает   -  person user2529058    schedule 29.06.2013
comment
проверьте ответ на этот вопрос, это, вероятно, то, что вы хотите запускает уже начатую активность"> stackoverflow.com/questions/13934061/   -  person JRowan    schedule 29.06.2013
comment
Я думаю, что играть музыку будет MediaPlayer. Поэтому просто остановите проигрыватель на onPause или onStop вашей активности.   -  person AnujMathur_07    schedule 29.06.2013


Ответы (1)


Пожалуйста, создайте глобальную переменную Activity и проверьте, не является ли она null, затем variable.finish() и запустите действие.

Activity globalVariable;
if(globalVariable!=null) {
    globalVariable.finish();
}
Intent in = new Intent(this,b.class);
startActivity(in);
person nilesh patel    schedule 29.06.2013