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).