最近在項(xiàng)目中整理前人留下來(lái)的一系列遺留問(wèn)題中發(fā)現(xiàn)了這樣一個(gè)bug躏吊,下面來(lái)看打印信息:
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)
根據(jù)信息我們定位到了具體的代碼行數(shù):
這時(shí)候我們?cè)賮?lái)看這個(gè)photoFragment.galleryModelList:
privateArrayListgalleryModelList;
這是一個(gè)存放相冊(cè)Bitmap的list萄唇。
簡(jiǎn)單的介紹一下這個(gè)Activity的功能:調(diào)取相冊(cè)里的照片顯示,選擇照片之后可以跳轉(zhuǎn)預(yù)覽Activity進(jìn)行詳情查看或者跳轉(zhuǎn)編輯頁(yè)面去上傳照片搪哪。
這個(gè)錯(cuò)誤發(fā)生在startActivity(intent)過(guò)程中,當(dāng)我們啟動(dòng)Activity時(shí),如果使用Bundle綁定過(guò)量的數(shù)據(jù),就會(huì)發(fā)生這個(gè)異常杂瘸。分析到這兒我心中也是千萬(wàn)頭羊駝在奔跑,又是前人留下來(lái)的大坑等著我去填伙菊。
解決方案
優(yōu)化代碼胧沫,解決上述問(wèn)題的關(guān)鍵是bundle中盡量不要存放太大的數(shù)據(jù)。
關(guān)于如何優(yōu)化占业,下一篇我們重點(diǎn)去分析。