2016-08-05 2 views
0

Я использую следующее намерение с уведомлением, и проблема в том, что если текущая деятельность такая же, как и намерение, ничего не происходит. Как открыть ту же активность с новыми данными?Как перезапустить текущую деятельность с новыми данными из намерения нажимать уведомление на Android

intent = new Intent(context, PackViewActivity.class); 
           intent.putExtra("pid", pack_id); 
           intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 

Здесь детали fromt он Manaifest:

<activity 
     android:name=".PackViewActivity" 
     android:configChanges="orientation|keyboardHidden|screenLayout|screenSize" 
     android:launchMode="singleTask"/> //I've also tried singleInstance with no success. 

В настоящее время все работает нормально, если текущая деятельность не PackViewActivity. В этом случае ничего не происходит.

+0

попробуйте этот 'Intent.FLAG_ACTIVITY_CLEAR_TOP' вместо' CLEAR_TASK' –

+0

См. Следующий пост, посмотрите, поможет ли это вам: http://stackoverflow.com/questions/1397361/how-do-i-restart-an-android -активность – EJoshuaS

+0

@VivekMishra Это не изменило ситуацию :(спасибо, хотя – jampez77

ответ

1

Как @Vivek упомянуто, используйте Intent.FLAG_ACTIVITY_CLEAR_TOP и удалите Intent.FLAG_ACTIVITY_CLEAR_TASK. Теперь, если ваша деятельность уже запущена, новое намерение будет доставлено в onNewIntent(). Вот где вы должны указать свой код для чтения. Кроме того, избавьтесь от android:launchMode в описании вашего действия, так как он несет с собой множество проблем.

1

Если требуемая деятельность уже находится на переднем плане, вам не нужно нажимать уведомление. В качестве альтернативы вы можете зарегистрировать активность в качестве слушателя для класса службы или активности, который выталкивает уведомление через NotificationManager. Затем обработайте уведомление соответствующим образом.