【发布时间】:2018-07-15 20:35:03
【问题描述】:
使用 Firebase 云消息传递,当应用在后台并且消息到达时,消息会转到系统托盘。当用户点击通知时,应用程序会启动,并且启动器活动会在Intent 中获取消息数据。
在我的例子中,这个通知是关于一些新结果的,所以当按下时,我想启动一个ResultsActivity。
为了实现这一点,我在OnStart 的LauncherActivity 中执行此操作
:
Intent intent = getIntent();
String searchId = intent.getStringExtra("search_id");
if(searchId != null){
Intent resultsIntent = new Intent(LauncherActivity.this, ResultsActivity.class);
resultsIntent.putExtra(ResultsActivity.SEARCH_ID_EXTRA, searchId);
startActivity(resultsIntent);
}
这一切都很好。
现在的问题是当点击应用栏上的“向上”箭头时,应用没有转到清单中定义的父活动(这不是启动器活动) 但对于启动器活动。这并不奇怪,因为 ResultActivity 是从 LauncherActivity 开始的,但这不是想要的行为。 想要的行为是将返回箭头发送到父 Activity,它恰好是 MainActivity。
我知道有 TaskStackBuilder 用于那种东西,但我不知道如何将that pattern 应用于我的案例,在这里我“通常”从另一个活动而不是从某个通知开始活动生成器。
TaskStackBuilder 是正确的解决方案吗?如果是这样,我该如何更改上面的代码以使用它?如果没有,什么是正确的解决方案?
【问题讨论】:
标签: android android-intent firebase-cloud-messaging back-stack taskstackbuilder