Я начинаю работу с уведомления с ожидающим намерением с помощью обратного стека. Вот как я делаю этоОткрытие приложения из recents восстанавливает не последнюю активность, но предыдущую
TaskStackBuilder stackBuilder = TaskStackBuilder.create(mContext);
stackBuilder.addNextIntentWithParentStack(intent);
stackBuilder.editIntentAt(0).putExtra(GCMUtils.NEXT_INTENT,BaseFragment.FragmentId.DIALOGS).
setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
resultPendingIntent = stackBuilder.getPendingIntent(requestCode, PendingIntent.FLAG_ONE_SHOT);
Тогда из деятельности А (начался с intent
) я начинаю деятельность B и закончить деятельность
Bundle extras = activity.getIntent().getExtras();
boolean isFromNotification = extras != null &&
extras.getBoolean(GCMUtils.NOTIFICATION_INTENT, false);
boolean noBackStack = isFromNotification &&
Build.VERSION.SDK_INT <= Build.VERSION_CODES.HONEYCOMB;
if (activity.isTaskRoot() || noBackStack) {
Intent intent = activity instanceof ActionBarActivity ?
((ActionBarActivity)activity).getSupportParentActivityIntent() :
NavUtils.getParentActivityIntent(activity);
if (noBackStack) {
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
}
activity.startActivity(intent);
activity.finish();
} else {
activity.onBackPressed();
}
После этого я выйти мое приложение с кнопкой назад (активность Б основная деятельность). Теперь, если вы открываете последние приложения и нажимаете мое приложение, оно восстанавливает активность A вместо активности B. Воспроизводит на android 2.3. Я не понимаю, почему он восстанавливает A вместо B. Что мне не хватает?
ПОДТВЕРЖДЕНИЕ! Эффект отличается, когда я использую кнопку возврата и кнопку дома. В случае домашней кнопки он восстанавливает активность B, как ожидалось. Только в случае кнопки «Назад» он восстанавливает активность A. Возможно, это сохраняет намерение, которое запускает приложение и повторно использует его при запуске из последних приложений? P.S. Приложение должно быть принудительно остановлено, чтобы воспроизвести это поведение. – Asimaruk
Ваши заявления не имеют смысла. BACK AND HOME делают совершенно разные вещи. Когда вы нажимаете BACK, это завершает текущую активность и возвращается к предыдущему действию в стеке. Если предыдущей операции не было, ваше приложение завершает работу. Однако нажатие HOME не вызывает 'finish()' для любого Activity. Он просто перемещает вашу задачу на задний план. Когда вы переносите существующую задачу из фона на передний план (выбирая ее из списка недавних задач), ваша задача должна быть в том же состоянии, что и когда вы ее оставили (то есть: то же самое действие должно быть сверху) , –
Также см. Http://stackoverflow.com/questions/19813652/remove-data-from-notification-intent/19820057#19820057, возможно, это объясняет, что вы видите. –