欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

TransactionTooLargeException解决方法

程序员文章站 2022-03-02 13:48:06
...

报错原因就是binder不能传递超过200k的数据

binder是Android进程通信用到的,像启动一个Activity也是需要和AMS进程通信,所以如果期间通过intent传递了大数据就会报错,
通过aidl底层也是通过binder去通信的

解决方法:

 1. 将传递的信息封装在一个静态的类中,或则封装在跳转对象的一个静态属性中,效率高,但是耦合性也高!

 2. 将传递的信息做本地存储,如SP存储、数据库等,然后在跳转对象中取出来,不会提高程序的耦合性,但是效率较低。

    相对于数据库而言,个人比较喜欢sp存储,因为比较简单。
    1. 存储基本类型这个不多说
    2. 存储实体类,首先可以使用Gson将实体转为json串(可以使用new Gson().toJson()方法),然后进行存储,最后在跳转对象中取出再利用Gson转为实体即可(可以使用new Gson().fromJson()方法)。

 3. 使用 MemoryFile 共享内存方式