我有一个应用程序,该应用程序发出通知,当您选择该选项时将启动 Activity 。根据Android文档,我可以使用NavUtils.shouldUpRecreateTask来检查该 Activity 是直接启动(即从通知中启动)还是通过正常的 Activity 堆栈启动。但是,它给出了错误的答案。我正在JellyBean上对此进行测试,但使用的是支持库。
基本上,即使 Activity 已经从通知中启动,shouldUpRecreateTask始终始终返回false。
为什么不应该提供正确答案的任何想法?
最佳答案
这是不对的!
从通知开始时,您必须在构建通知时创建堆栈,如此处所述:http://developer.android.com/guide/topics/ui/notifiers/notifications.html#NotificationResponse
因此,在创建通知时,您必须执行以下操作:
Intent resultIntent = new Intent(this, ResultActivity.class);
// ResultActivity is the activity you'll land on, of course
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
// Adds the back stack
stackBuilder.addParentStack(ResultActivity.class);
// Adds the Intent to the top of the stack
// make sure that in the manifest ResultActivity has parent specified!!!
stackBuilder.addNextIntent(resultIntent);
// Gets a PendingIntent containing the entire back stack
PendingIntent resultPendingIntent =
stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
然后,当您单击“向上”按钮时,您需要常规代码,即:
if (NavUtils.shouldUpRecreateTask(this, intent)) {
// This activity is NOT part of this app's task, so
// create a new task when navigating up, with a
// synthesized back stack.
TaskStackBuilder.create(this)
// Add all of this activity's parents to the back stack
.addNextIntentWithParentStack(intent)
// Navigate up to the closest parent
.startActivities();
} else {
NavUtils.navigateUpTo(this, intent);
}
这对我来说非常有效。
关于android - NavUtils.shouldUpRecreateTask在JellyBean上失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14089867/