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

22

我想编写一个适用于Android平台的服务,当当前前台活动更改时得到通知。 基本上,只有在顶部活动更改时,该服务才应执行某些任务。 是否有订阅并在此类事件发生时得到通知的方式? 或者没有可能性,服务应从时间到时间轮询正在运行的活动列表并检查前台活动是什么?这不是首选解决方案...


你正在使用哪个平台编写你的服务? - Guillaume
2
你有没有找到解决方案?我正在尝试做类似的事情。 - harbinja
你查看过logcat输出了吗?我认为当前台活动更改时,ActivityManager总是参与其中的,因此这可能可以从日志中看到。 - ovenror
@Alex 你最终解决了这个问题吗? - benkol
2个回答

6
据我所知,有两种方法可以做到这一点。
  1. 启动一个服务并监视Activity Stack,您可以在此处查看
  2. 使用辅助功能服务,您可以在此处找到解决方案

1
请注意,用于轮询当前活动的链接技术在Android 5+中不起作用。 - Sam
@Sam 那么保护选定应用程序的应用程序是如何工作的呢?它们如何检测应用程序何时进入前台?谢谢。 - Ashraf Alshahawy
@Astrount,我不知道现在开发者们都在用什么,但是上次我检查过,这个答案中的第二个选项在Android 5中仍然有效。 - Sam

0

你应该将每个活动绑定到服务,这样你就会知道哪个活动正在运行。

试试这个:

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

这个方法将提供正在前台运行的活动的包名信息..............


1
这并不是一个解决方案,也许我表达不清楚。我想让服务被通知前台正在运行的应用程序(它可能是任何已安装的应用程序),并与预先定义的应用程序列表进行比较,如果在列表中则执行一些操作。 - Alex
啊,好的。你写了Activity,所以我理解它只是一个应用程序。很抱歉我不知道如何做你想做的事情。 - fedj
@Alex,你可以使用这种技术来完成那个任务,但你需要轮询。 - Sam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接