[Android]项目中遇到的bug:android.os.TransactionTooLargeException

最近在项目中整理前人留下来的一系列遗留问题中发现了这样一个bug,下面来看打印信息:

android.os.TransactionTooLargeException

data parcel size 1743484 bytes

下面是打印栈信息

java.lang.RuntimeException:Failure from system

android.app.Instrumentation.execStartActivity(Instrumentation.java:1533)

......

Caused by:

android.os.TransactionTooLargeException:data parcel size 1743484 bytes

android.os.BinderProxy.transactNative(Native Method)

android.os.BinderProxy.transact(Binder.java:628)

android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:3512)

android.app.Instrumentation.execStartActivity(Instrumentation.java:1526)

android.app.Activity.startActivityForResult(Activity.java:4389)

android.support.v4.app.h.startActivityForResult(BaseFragmentActivityJB.java:50)

android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:79)

android.support.v4.app.b.a(ActivityCompatJB.java:30)

android.support.v4.app.ActivityCompat.a(ActivityCompat.java:146)

android.support.v4.app.FragmentActivity.a(FragmentActivity.java:932)

android.support.v4.app.FragmentActivity$a.a(FragmentActivity.java:1047)

android.support.v4.app.Fragment.a(Fragment.java:940)

android.support.v4.app.Fragment.a(Fragment.java:929)

com.diibear.teacher.module.base.b.a(BaseFragment.java:133)

com.diibear.teacher.module.base.b.a(BaseFragment.java:149)

com.diibear.teacher.module.moment.fragment.PhotoFragment$b.handleMessage(PhotoFragment.java:215)

android.os.Handler.dispatchMessage(Handler.java:102)

android.os.Looper.loop(Looper.java:154)

android.app.ActivityThread.main(ActivityThread.java:6692)

java.lang.reflect.Method.invoke(Native Method)

com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)

com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)

根据信息我们定位到了具体的代码行数:

这时候我们再来看这个photoFragment.galleryModelList:

privateArrayListgalleryModelList;

这是一个存放相册Bitmap的list。

简单的介绍一下这个Activity的功能:调取相册里的照片显示,选择照片之后可以跳转预览Activity进行详情查看或者跳转编辑页面去上传照片。

这个错误发生在startActivity(intent)过程中,当我们启动Activity时,如果使用Bundle绑定过量的数据,就会发生这个异常。分析到这儿我心中也是千万头羊驼在奔跑,又是前人留下来的大坑等着我去填。

解决方案

优化代码,解决上述问题的关键是bundle中尽量不要存放太大的数据。

关于如何优化,下一篇我们重点去分析。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,216评论 25 709
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,663评论 2 45
  • 昨晚在中卫沙坡头水镇的锦江之星入住的,貌似一个新开的三星级景点有一条河蜿蜒贯穿,酒店是上个月新开,各种干净且无味确...
    云裳灼煙阅读 708评论 0 0
  • 1年之守,3年之痛,5年之离,7年之痒。感情的生活如此,职场何尝不是,而立之年,不进则退。 生物学上讲,是大概过了...
    WhatIfYou阅读 2,726评论 0 1
  • 1,什么是Angular 基于JavaScript开发的客户端应用框架 2,angular模式 mvc架构: m...
    嗯后来呢阅读 2,593评论 0 1