为什么“避免通过Binder传递大型物体”?

时间:2015-06-12 03:33:38

标签: android

我正在阅读Google的“适用于Android的开发”系列中 - https://medium.com/google-developers/developing-for-android-vii-the-rules-framework-concerns-d0210e52eee3

在框架章节中,它说“避免通过粘合剂传递大对象 - 对象在通过Binder序列化时被复制,因此对象越大,传递过程的时间就越长。“

我不确定我完全明白这一点。这是什么时候发生的?当我在活动之间传递数据时,这是否适用于此?

2 个答案:

答案 0 :(得分:1)

Activity不是Binder,在一个app中的活动之间传递数据不是问题。当您在进程之间传递数据时,例如在不同应用程序中的活动或服务之间传递数据时,请避免使用大对象。

答案 1 :(得分:0)

每个进程都有一个大小为1 MB的关联活页夹缓冲区。所有事务,一个进程与其他进程一起使用此缓冲区。所以,自然我们应该避免通过绑定器传递非常大的对象,序列化传输对象将花费更多时间,加上事务甚至可能由于大小限制而失败,给出TransactionTooLargeException, http://developer.android.com/reference/android/os/TransactionTooLargeException.html