Android 将暂停的活动置于前端,并将数据传递到最顶层的实例
应用程序背景 带有持续通知的音乐播放器应用程序 目标 一接到通知,我必须:Android 将暂停的活动置于前端,并将数据传递到最顶层的实例,android,android-intent,android-activity,Android,Android Intent,Android Activity,应用程序背景 带有持续通知的音乐播放器应用程序 目标 一接到通知,我必须: 将用户上次参加的活动带到前台 显示全屏音乐播放器,这是每个活动布局的一部分 永远不要创建新任务,这意味着单击notif或launcher图标会显示相同的任务 确定意图来自何处(launcher或notif),并相应地采取行动(notif弹出全屏播放器,launcher仅恢复当前任务) 到目前为止的实施情况 所以,是的,要做到这一点,我有一个名为LauncherActivity的单实例活动。它所做的只是调用LoginAct
现在我的问题是,如何将数据发送到最顶层的活动?该活动如何知道它是通过notif而不是启动器图标启动的?设置通知时,添加一个“额外”以指示
意图
来自通知:
Intent i = new Intent(this, MyMainActivity.class);
i.setAction(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_LAUNCHER);
i.putExtra("fromNotification", true);
startActivity(i);
在MyMainActivity.onNewIntent()
和MyMainActivity.onCreate()
中,您可以检查是否已从通知启动,如下所示:
if (intent.hasExtra("fromNotification")) {
// Have been launched from the Notification here
}
在
onCreate()
中,您需要使用getIntent()
而不仅仅是意图
您好,很抱歉回复太晚。确实可以将意图发送到该特定活动,但我是否希望将其发送到最顶层的活动?因为主活动可以打开其他活动,理想情况下,我希望将用户返回到他以前正在做的事情,而不是强迫他停止o转到主活动屏幕。抱歉,我不了解您的所有要求。在这种情况下,最好是您的通知发送一个广播意图,而不是启动一个活动。然后,广播意图可以在一个静态变量中设置一个标志,指示它正在从a通知
,然后启动启动活动。然后,所有活动都应在其onResume()方法中检查此静态变量,以确定应用程序是如何(重新)启动的。
if (intent.hasExtra("fromNotification")) {
// Have been launched from the Notification here
}