Я реализую GCM. Мое приложение имеет два действия, например A
и B
. Я использую этот код для запуска B
из NotificationBar:
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 открывает Activity B
с помощью намерения, например "B-notification-intent", затем я открываю Activity A
из B
с помощью кнопки "Назад", затем снова запускаю B
из A
, имея новый намерение (скажем, "BA-intent" ). Я использую следующий код:
intent = new Intent(this, B.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
И затем я получаю новые данные в B
(т.е. обновляется экран B
).
Но если я нажму кнопку "Домой", а затем я запустил приложение из "Недавнего приложения", я стану старше B
с "B-notification-intent". Вместо этого мне нужен последний "Намерение", т.е. "Б-А-намерение". Я использую этот код в B
:
@Override
protected void onCreate(Bundle b)
{
fetchDataFromDB(getIntent());
}
@Override
protected void onNewIntent(Intent intent)
{
fetchDataFromDB(intent);
}
Итак, кто-нибудь, пожалуйста, помогите мне получить мой текущий экран (намерение).