当前位置: 首页 > 面试题库 >

从通知中恢复活动

齐运诚
2023-03-14
问题内容

我在应用程序的状态栏中有一条通知:

    Notification notification = new Notification(R.drawable.icon, null, System.currentTimeMillis());

    Intent notificationIntent = new Intent(this.parent, MainActivity.class);
    PendingIntent contentIntent = PendingIntent.getActivity(this.parent, 0, notificationIntent, 0);

    ...

    notification.flags = Notification.FLAG_ONGOING_EVENT;        
    mNotificationManager.notify(NOTIFICATION_ID, notification);

这样做的问题是,当您从应用程序中按下主页按钮(将其推到后台)然后在从状态栏访问的列表中的通知上按下时,它将启动活动的新副本。我要做的就是恢复应用程序(例如,长按主屏幕按钮并按应用程序图标上的)。有没有一种创建意图的方法?


问题答案:

我已通过将launchMode我的活动更改singleTask为androidManifest.xml文件来解决了此问题。

此属性的默认值为standard,它允许运行任意数量的实例。

“ singleTask”和“
singleInstance”活动只能开始一个任务。它们始终是活动堆栈的根。此外,设备一次只能保存一个活动实例,而只能执行一个这样的任务。[…]

“ singleTask”和“ singleInstance”模式也仅在一个方面彼此不同:“
singleTask”活动允许其他活动成为其任务的一部分。它始终是任务的根源,但是可以将其他活动(必要时为“标准”和“
singleTop”活动)启动到该任务中。另一方面,“
singleInstance”活动不允许其他活动成为其任务的一部分。这是任务中唯一的活动。如果它启动另一个活动,则该活动将分配给另一个任务-
就像意图中的FLAG_ACTIVITY_NEW_TASK一样。

您可以在Android开发者指南中找到详细的说明

我希望这有帮助



 类似资料:
  • 我有一个包含3个活动的应用程序。 我有主要活动。这将调用第二个活动,然后调用第三个活动。我想在不进入 onCreate 的情况下返回到主要活动。 这是第三个活动的代码:

  • 我有一个活动正在执行一些下载功能。该活动将弹出一个进度对话框,在下载时禁用用户交互,并创建一个通知进度。 设置意向标志

  • 我有两个活动,分别是家庭活动和沙拉菜单活动。主页活动包含七个片段,其中一个名为菜单类别的片段有四个图像,第一个图像下面的文本是沙拉菜单,当用户单击沙拉菜单时,将启动名为沙拉菜单活动的新活动。 我想,当用户点击后退按钮时,home活动必须开始,并且应该从启动salad菜单活动的相同片段开始,即home活动中的菜单类别片段。我希望每个活动都会发生这种情况,例如,如果用户从您的订单片段开始一个新的活动,

  • 我看到了一个Firebase控制台的代码:如何为通知指定click_action,我使用了该通知,但在初始化变量CLS时出现了一个错误。我试图通过定义CLS=NULL来解析,以清除错误。它无法使用click_action打开我指定的活动 拜托,我有没有搞错什么?我怎么才能让它起作用?

  • 我有一个活动A,它使用一个意图去活动B,有时活动A也开始另一个活动,活动C,当这些活动结束时,活动A有办法知道它是从哪个活动(B或C)重新开始的吗?提前感谢。

  • 我有一个端口上带有UDP套接字的活动。如果我按下Home按钮,活动进入后台,将调用OnPause()和OnStop()方法。现在,当我收到一些UDP数据包时,我想恢复我的活动。阅读其他帖子,我明白我必须: 将活动声明为(或) 然后,当我想恢复活动时: 这个解决方案对我不起作用。调用不会在前台显示我的活动,也不会调用。 以下标志可以完成任务,但我不想清除任务并重新启动新任务。