如何在android中的AccessibilityServiceInfo(AccessibilityService)中最好地使用packageNames

问题描述 投票:0回答:1

我是新成员。

我发现过滤AccessibilityService的方法是packageNames使用getServiceInfo和setServiceInfo。

我想过滤所有活动包以了解哪些应用程序是打开的。这意味着它可能在列表中大约有50 150个包。

你能帮我一个CPU,资源节约的最佳案例(它更好吗?)1 /保留默认的packageNames为null并在onAccessibilityEvent 2中设置过滤器/ set packageNames列表50 150个包

PS:当我离开它默认时,很多事件发生...所以害怕它吃了很多电池

谢谢

android accessibilityservice
1个回答
0
投票

无论您是否添加包名,都会发生这些事件。如果您深入了解Android开源代码,您将看到构建这些事件的大多数步骤都会发生“耗电”,无论您是否过滤它们。过滤是为了您的方便,因此您不会最终在Java中过滤它们作为onAccessibilityEvent方法的第一步。做对您的应用程序和用例最有意义的事情,它将对性能影响最小,除非您的Java过滤功能用于类似目的。

CPU节省的最佳案例是,您可以尽可能高效地处理您关注的事件,并且不会对这些事件进行昂贵的操作。

其次,是让很少的事件成为您的业务逻辑,为您的用例提供服务。但是,如何过滤这些事件是无关紧要的。如果保留此配置的默认值,请通过Java代码将其过滤掉。如果您可以通过设置Service Configuration允许的一些过滤器(包过滤器,限制等)来完成所有过滤。或两种方法的组合。但是,一种方法与另一种方法相比,性能优势很小甚至为零。

总体而言:更喜欢干净的代码,只处理您关心的事件。特别是限制/过滤尽可能多的滚动和屏幕更改相关事件。然而,过度思考这种过滤的发生方式是浪费时间。

© www.soinside.com 2019 - 2024. All rights reserved.