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

关于错误android.os.TransactionTooLargeException导致的崩溃

程序员文章站 2022-04-15 22:11:28
...
关于错误android.os.TransactionTooLargeException导致的原因
android.os.TransactionTooLargeException
[2018/1/22 20:23:04] W/ActivityManager( 1949): android.os.TransactionTooLargeException
[2018/1/22 20:23:04] W/ActivityManager( 1949): 	at android.os.BinderProxy.transact(Native Method)
[2018/1/22 20:23:04] W/ActivityManager( 1949): 	at android.app.ApplicationThreadProxy.schedulePauseActivity(ApplicationThreadNative.java:660)
[2018/1/22 20:23:04] W/ActivityManager( 1949): 	at com.android.server.am.ActivityStack.startPausingLocked(ActivityStack.java:773)
[2018/1/22 20:23:04] W/ActivityManager( 1949): 	at com.android.server.am.ActivityStack.finishActivityLocked(ActivityStack.java:2473)
[2018/1/22 20:23:04] W/ActivityManager( 1949): 	at com.android.server.am.ActivityStack.finishTopRunningActivityLocked(ActivityStack.java:2341)
[2018/1/22 20:23:04] W/ActivityManager( 1949): 	at com.android.server.am.ActivityStackSupervisor.finishTopRunningActivityLocked(ActivityStackSupervisor.java:2080)
[2018/1/22 20:23:04] W/ActivityManager( 1949): 	at com.android.server.am.ActivityManagerService.handleAppCrashLocked(ActivityManagerService.java:9843)
[2018/1/22 20:23:04] W/ActivityManager( 1949): 	at com.android.server.am.ActivityManagerService.makeAppCrashingLocked(ActivityManagerService.java:9736)
[2018/1/22 20:23:04] W/ActivityManager( 1949): 	at com.android.server.am.ActivityManagerService.crashApplication(ActivityManagerService.java:10395)
[2018/1/22 20:23:04] W/ActivityManager( 1949): 	at com.android.server.am.ActivityManagerService.handleApplicationCrashInner(ActivityManagerService.java:9946)
[2018/1/22 20:23:04] W/ActivityManager( 1949): 	at com.android.server.am.NativeCrashListener$NativeCrashReporter.run(NativeCrashListener.java:86)

在Android中,进程间通信通过binder实现,bind是通信的数据载体,当序列化后的数据单元过大时,就会出问题,报出android.os.TransactionTooLargeException。当利用Intent向Activity传递数据的时候,传递数据时有一个缓冲区,而这个缓冲区最大只有1MB,所以当数据量大时会出现如上错误。
getIntent().getSerializableExtra()等方法携带的数据不宜过大,否则容易导致崩溃。