我是新成员。
我发现过滤AccessibilityService的方法是packageNames使用getServiceInfo和setServiceInfo。
我想过滤所有活动软件包,以了解打开了哪个应用程序。这意味着清单中可能包含约50150个包裹。
您能帮我最好的情况吗,CPU,节省资源(哪个更好?)1 /保留默认packageNames为null并在onAccessibilityEvent中进行过滤 2 / set packageNames is list 50150 packages
PS:当我将其保留为默认值时,会发生很多事件……以至于它害怕消耗大量电池
谢谢
答案 0 :(得分:0)
无论是否添加程序包名称,这些事件都会发生。如果您深入研究Android开放源代码,您会发现构建这些事件的大部分步骤都会发生,从而导致“电池耗尽”,而无论是否过滤它们。过滤是为了方便起见,因此您最终不会在Java中过滤onAccessibilityEvent
方法中的第一步。尽一切可能对您的应用程序和用例有意义,除非对您的Java过滤功能造成破坏,否则它将对性能的影响降到最低。
节省CPU的最佳案例是让您尽可能高效地处理自己关心的事件,并且对这些事件不进行任何昂贵的操作。
第二,就是让尽可能少的事件像使用案例一样进入您的业务逻辑。但是,如何过滤这些事件是无关紧要的。如果将此配置保留为默认设置,请通过Java代码将其过滤掉。如果可以通过设置服务配置允许的某些过滤器(程序包过滤器,节流阀等)来完成所有过滤操作。或两种方法的组合。但是,一种方法相对于另一种方法几乎没有从零到零的性能优势。
总体:首选干净的代码,仅处理您关心的事件。特别是节流/过滤尽可能多的滚动和屏幕更改相关事件。但是,过分考虑这种过滤是如何浪费时间的。