如何在前台(顶部)活动(应用程序)更改时收到通知

Posted

技术标签:

【中文标题】如何在前台(顶部)活动(应用程序)更改时收到通知【英文标题】:How to be notified when foreground (top) activity (application) changes 【发布时间】:2011-04-21 17:31:55 【问题描述】:

我想为 android 平台编写一个服务,当当前前台活动发生变化时会收到通知。 基本上,服务应该只在***活动发生变化时才执行一些任务。 有什么方法可以订阅并在发生此类事件时得到通知? 或者没有可能性,服务应该不时轮询正在运行的活动列表并检查前台活动是什么?不是最好的解决方案......

【问题讨论】:

您尝试在什么平台上编写您的服务? 您找到解决方案了吗?我正在尝试做类似的事情。 您查看了 logcat 输出吗?我假设当前台活动发生变化时始终涉及 ActivityManager,因此这可能从日志中可见。 @Alex 你有没有解决这个问题? 【参考方案1】:

AFAIK 有两种方法可以做到这一点。

    启动服务并监控Activity Stack,你可以检查一下here 使用无障碍服务,您可以找到解决方案here

【讨论】:

请注意,用于轮询当前活动的链接技术在 Android 5+ 中不起作用。 @Sam 那么保护所选应用程序的应用程序如何工作?他们如何检测应用程序何时出现和前台?谢谢 @Astrount,我不知道这些天开发人员使用什么,但我上次检查时,此答案中的选项 2 在 Android 5 中仍然有效。【参考方案2】:

您应该将每个活动绑定到该服务,您将知道哪个活动正在运行。

试试这个:

List runningTaskInfos=actvityManager.getRunningTasks(1).get(i).topActivity .getPackageName();

此方法将提供前台活动包名称的信息........

【讨论】:

嗯,这不是一个解决方案,也许我表达自己错了,我希望通知服务在前台运行什么应用程序(它可以是任何已安装的应用程序)并与一个预定义的应用程序列表,如果它在列表中做一些工作。 啊,好吧,你写了 Activity,所以我明白它只是一个应用程序。我真的不知道该怎么做你想做的对不起 @Alex,你可以使用这种技术来做到这一点,但你需要投票。

以上是关于如何在前台(顶部)活动(应用程序)更改时收到通知的主要内容,如果未能解决你的问题,请参考以下文章

当应用程序处于活动状态时,phonegap 通用推送 ios 警报

Android:如何从活动活动中关闭前台活动?

Android 通知单击保持堆栈并在需要时将应用程序置于最前面。如果特定活动在顶部,则传递数据

如何在 Android 中的活动/任务更改时收到通知

当非活动手表收到本地通知时如何触发触觉警报

活动窗口更改时收到通知