android绑定器

时间:2013-01-08 04:08:09

标签: android performance android-binder

应用程序拥有大约100个本地绑定器实例是否正常?这个数字攀升至如此之高,并且从未下降到最初的水平。有大量粘合剂的场景可能是什么?

1 个答案:

答案 0 :(得分:2)

(在作者询问使用adb shell dumpsys meminfo列出的本地绑定器数量时重写)。我无法回答关于这是否正常的问题,因为我以前从未发现过这个命令!

但这里有一些关于可能导致它的情景的信息。

本地绑定器是Android'Binder'内核IPC驱动程序认为可以从另一个进程接收函数调用的任何对象。

这些事情可能包括:

  • 您在代码中声明的任何对象都来自IBinder。当您声明Android服务时,总会有这样的对象。通常,当您使用其他人的服务时,您也会创建此类对象(作为侦听器)。
  • 等效Java IBinder - Android框架内的派生对象。在某些情况下,这可能是显而易见的,例如当您为某些系统服务提供某种类型的侦听器时。但是其他Android框架类通常也会涉及Binders。例如,我感觉Android Bitmap在其中的某处包含IBinder,以便安排不同的进程共享位图数据而无需复制它。不过,我不确定。
  • 使用C ++的Android框架部分也是Binders。例如,我认为每个Android应用程序进程都连接到名为ISurfaceComposer的图形合成引擎(表面抛光器)。

所以,要弄清楚为什么你有这么多的Binders,请考虑这些事情:

  • 您是否希望通过其他进程通知任何系统事件?例如,广播接收器,或者您传递给系统服务的任何类型的侦听器等。
  • 您自己使用Service和AIDL吗?
  • 您是否将复杂的Android框架类传递给系统API?

我的直觉是,100是不寻常的;可能没有什么可以担心,但我仍然很想知道你是否知道原因是什么。