Android 在活动或任务更改时获得通知

Android 在活动或任务更改时获得通知,android,android-activity,android-service,Android,Android Activity,Android Service,安卓系统是否有任何方式可以通知服务系统中的某个活动或任务(不仅仅是我的活动/任务!)发生了某种变化(例如,另一个活动被带到前台或停止)?当然,这是为了避免轮询相同的信息 有一个相同的问题,但它是3年前提出的,所以在此期间,也许有人对此有答案?作为对这个问题的补充:如果答案是否定的,那么有没有任何方法可以让某人通过低级编程或其他方式来增强此功能?您不希望a已经涵盖了什么吗 onPause()和onResume()是否足够?不,没有通用的解决方案。您只能在自己活动的生命周期方法中记录此信息。从And

安卓系统是否有任何方式可以通知服务系统中的某个活动或任务(不仅仅是我的活动/任务!)发生了某种变化(例如,另一个活动被带到前台或停止)?当然,这是为了避免轮询相同的信息


有一个相同的问题,但它是3年前提出的,所以在此期间,也许有人对此有答案?作为对这个问题的补充:如果答案是否定的,那么有没有任何方法可以让某人通过低级编程或其他方式来增强此功能?

您不希望a已经涵盖了什么吗


onPause()和onResume()是否足够?

不,没有通用的解决方案。您只能在自己活动的生命周期方法中记录此信息。从Android 5开始,即使是轮询也不起作用<代码>活动管理器#getRecentTasks()被削弱了。从文档中:

此方法在API级别21中被弃用。从
LOLLIPOP
开始,这种方法不再适用于第三方应用程序:以文档为中心的recents的引入意味着它可以将个人信息泄漏给调用者。为了向后兼容,它仍然会返回其数据的一小部分:至少是调用方自己的任务(尽管请参阅
getAppTasks()
,了解检索该信息的正确支持方式),以及可能的一些其他任务,例如已知不敏感的home


因为这被认为是一个安全问题,所以你可以打赌,如果有一种低级的方法可以做到这一点,谷歌最终会发现并打破它。

我觉得很懒,对不起,试试这个逻辑


看看这个。您希望在这里实现的是记录当前正在运行的所有任务;在一个循环中,你不断检查,当一个任务死亡时,通过检查整个正在运行的任务,你将得到通知,循环通过,你将知道谁死了-但这并不局限于所有版本,有些人会告诉你,这并不意味着死亡。

是的,如果我只对我的活动感兴趣的话。我对整个系统感兴趣,如果有任何活动发生变化。请仔细阅读问题/参考链接问题。那里的答案和你的问题一样。是的,我知道API有变化。我们可以使用棒棒糖中的UsageStats。至于安全问题:如果某个活动或任务以某种方式发生了变化,我们谈论的是一个无辜的通知,而不是如何发生变化。我不认为这些信息可能有害。你所知道的足以让你的服务醒过来看看发生了什么。@C.s.也许吧。但是
UsageStats
需要一个隐藏的权限,该权限只能通过系统活动授予,并且有文件证明,系统活动可能不会出现在所有设备上。值得注意的是,三星已经将其从棒棒糖设备中移除。因此,如果您的解决方案基于
USAGests
API,您选择不支持三星设备。我不知道三星删除了此权限,哈哈。实际上,没有支持的方法可以知道哪些活动当前在前台?那么,我们需要一些聪明的黑客;-)@显然,C.S.LG也将其移除。至于安全问题,谷歌的理念似乎是,用户都是白痴,如果允许Android设备做任何远程有趣的事情,它们将立即被恶意软件接管。这就是为什么Android永远不会成为通用计算平台的原因。谷歌讨厌开发者,最近他们愤怒地关闭了11000个bug报告,等等。我很欣赏这个答案,但你们能在回答之前阅读这个问题吗?^^我清楚地说我想避免投票。我知道如何这样做,这不是问题所在。但由于这种方法需要定期检查自己的更新情况,这不是我想要的。很抱歉,先生没有注意@C.S。但处理全局任务需要很多投入,因为据我所知,android不希望您处理它,而是希望您自己处理它,所以要达到这一目的,您需要深入了解,但是嘿,我的想法只是我的想法。