【发布时间】:2011-09-03 03:16:29
【问题描述】:
我有一个activity,它不断(每秒几次)通过 AIDL 将byte[] 数据发送到service。 service 使用message-bundle* 将这些消息转发到网络线程的handler。网络线程也不断地接收数据,它以message-bundle 的形式发送到service 的handler。 service 通过 AIDL 将此 bundle 发送给其他 activities。
如您所知,为bundles 分配了大量内存。
在 DDMS 上查看我的内存分配后,我看到内存分配给:
-
bundle正在初始化 - 正在创建的哈希映射
-
byte[]数据作为条目添加到哈希表中
我想尽可能少地减少内存分配。
有没有更好的方式在活动/线程之间发送字节[],而不是通过带有捆绑包的消息?
*通过message-bundle,我的意思是message 以bundle 作为数据
尝试:创建一个 bundle 对象池,但效果不太好 - 很难在活动之间进行管理,而且我不知道如何使用 byte[] 数据预分配它...
【问题讨论】:
-
我不这么认为,但我不是安卓专家;如果有办法,那么这对我的 Android 应用程序来说意义重大。当然,您可以尝试回收您创建的对象。就像带有 Singleton 回收类的字节缓冲区一样。
-
这就是我所说的回收 btw 的意思。获取和释放只是 POJO 的资源:@987654321@