Android: Aktywność używa starej intencji, jeśli uruchamiasz aplikację z ostatniego zadania

Implementuję GCM. Moja aplikacja ma dwie czynności, powiedzmyA iB. Używam tego kodu do uruchomieniaB z paska powiadomień:

long when = System.currentTimeMillis();
NotificationManager notificationManager =
    (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
String title = context.getString(R.string.app_name);        
Notification notification = new Notification(R.drawable.app_notification_icon, "De Centrale", when);//message
Intent notificationIntent = new Intent(context, B.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); //|Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
PendingIntent intent = PendingIntent.getActivity(context, 0, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT);
notification.setLatestEventInfo(context, title, msg, intent);
notification.flags |= Notification.FLAG_AUTO_CANCEL;
notificationManager.notify(0, notification);

NotificationBar otwiera działanieB z intencją, powiedz „zamiar powiadomienia B”, a następnie otwieram działanieA zB za pomocą przycisku Wstecz, a następnie ponownie uruchamiamB zA posiadanie nowego zamiaru (powiedz „B-A-intent”). Używam poniższego kodu:

intent = new Intent(this, B.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);              
startActivity(intent);

A potem dostaję nowe daneB (tj. ekranB jest odświeżony). Ale jeśli nacisnę przycisk Home, a następnie uruchomię aplikację z aplikacji Recent, wtedy będę starszyB ekran z „powiadomieniem B-intent”. Zamiast tego chcę najnowszej intencji, czyli „zamiaru B-A”. Używam tego kodu wB:

@Override
protected void onCreate(Bundle b)
{
    fetchDataFromDB(getIntent());           
}

@Override
protected void onNewIntent(Intent intent)
{
    fetchDataFromDB(intent);        
}

Więc proszę, pomóż mi zdobyć mój obecny ekran (zamiar).

questionAnswers(1)

yourAnswerToTheQuestion