대기중인 인 텐트가있는 알림에서 백 스택으로 활동을 시작합니다. 여기에 내가 그것 (활동 B는 내가 다시 버튼으로 내 응용 프로그램을 종료 그 후recents에서 앱을 열면 마지막 활동이 아니라 이전 활동으로 복원됩니다.
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();
}
활동 B 마무리 활동을 시작 다음 (intent
시작) 활동 A에서
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);
입니다
수 있도록하는 방법이다 주요 활동). 이제 최근 앱을 열고 내 앱을 클릭하면 액티비티 B 대신 액티비티 A가 복원됩니다. 앱은 안드로이드 2.3에서 재생됩니다. 나는 왜 그것이 B. 대신에 A를 되 돌리는지 이해하지 못한다. 나는 무엇을 놓치고 있는가?
CLARIFICATION! 뒤로 버튼과 홈 버튼을 사용하면 효과가 달라집니다. 홈 버튼의 경우 예상대로 활동 B를 복원합니다. 뒤로 버튼의 경우에만 활동 A를 복원합니다. 응용 프로그램을 시작한 인 텐트를 저장하고 최근 응용 프로그램에서 시작할 때 재사용 할 수 있습니까? P. 이 동작을 재현하려면 응용 프로그램을 강제로 중지해야합니다. – Asimaruk
당신의 진술은 말이되지 않습니다. BACK과 HOME은 완전히 다른 일을 수행합니다 BACK을 누르면 현재 활동이 끝나고 스택의 이전 활동으로 돌아갑니다. 이전 활동이 없으면 앱이 종료됩니다. 그러나 HOME을 누르면 어떤 활동에서나 finish()를 호출하지 않습니다. 작업을 백그라운드로 옮깁니다. 기존 작업을 백그라운드에서 포 그라운드로 가져올 때 (최근 작업 목록에서 선택), 작업은 이전 작업과 완전히 동일한 상태 여야합니다 (즉, 동일한 작업이 맨 위에 있어야 함) . –
http://stackoverflow.com/questions/19813652/remove-data-from-notification-intent/19820057#19820057 어쩌면 이것이 당신이보고있는 것을 설명해줍니다. –