Col*_*ire 2 android android-7.0-nougat
在Android N上,无论何时我在bundle中传递一些二进制或大数据,我都会得到一个TransactionTooLargeException,但它在android M及以下版本上运行没有问题.
我怎么解决这个问题?
Col*_*ire 15
Android N中存在行为更改
引用文档:
现在很多平台API已经开始检查大跨越的有效载荷发送
Binder交易,系统现在重新抛出TransactionTooLargeExceptions的RuntimeExceptions,而不是默默地记录或抑制它们.一个常见的例子是存储太多数据Activity.onSaveInstanceState(),导致 在您的应用程序定位时ActivityThread.StopInfo抛出数据.RuntimeExceptionAndroid 7.0
注意:以M或以下为目标的应用不会抛出异常,它们会默默地记录或禁止它们
重新思考为什么首先需要捆绑数据的原因.
如果是二进制数据或位图,最好将其存储在文件中并传递包中的路径.
如果你传递的对象太多了
您可以使用像库Otto,EventBus以避免它.
只需再次传递构造Object所需的必要信息.
创建一个单例类并在那里设置数据并从那里访问另一个Activity或Fragment.
| 归档时间: |
|
| 查看次数: |
954 次 |
| 最近记录: |