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

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

【问题讨论】:

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

标签: android service android-activity foreground


【解决方案1】:

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

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

【讨论】:

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

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

试试这个:

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

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

【讨论】:

  • 嗯,这不是一个解决方案,也许我表达自己错了,我希望通知服务在前台运行什么应用程序(它可以是任何已安装的应用程序)并与一个预定义的应用程序列表,如果它在列表中做一些工作。
  • 啊,好吧,你写了 Activity,所以我明白它只是一个应用程序。我真的不知道该怎么做你想做的对不起
  • @Alex,你可以使用这种技术来做到这一点,但你需要投票。
猜你喜欢
  • 2010-10-20
  • 2020-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多