我必须使用视频播放器app,当我在列表中选择一个项目时,我打开一个新活动,在此活动中接收一个带有值字符串的意图,然后初始化一个片段,有视频播放器,当开始视频时,该应用程序已关闭,因为有数据包大小错误,我不知道原因启动显示此错误。
> > FATAL EXCEPTION: main
> Process: com.msi.eluniversal, PID: 969
> java.lang.RuntimeException: android.os.TransactionTooLargeException:
> data parcel size 689244 bytes
> at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3752)
> at android.os.Handler.handleCallback(Handler.java:751)
> at android.os.Handler.dispatchMessage(Handler.java:95)
> at android.os.Looper.loop(Looper.java:154)
> at android.app.ActivityThread.main(ActivityThread.java:6077)
> at java.lang.reflect.Method.invoke(Native Method)
> at
> com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
> at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
> Caused by: android.os.TransactionTooLargeException: data parcel size
> 689244 bytes
> at android.os.BinderProxy.transactNative(Native Method)
> at android.os.BinderProxy.transact(Binder.java:615)
> at
> android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:3606)
> at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3744)
> at android.os.Handler.handleCallback(Handler.java:751)
> at android.os.Handler.dispatchMessage(Handler.java:95)
> at android.os.Looper.loop(Looper.java:154)
> at android.app.ActivityThread.main(ActivityThread.java:6077)
> at java.lang.reflect.Method.invoke(Native Method)
> at
> com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
> at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
答案 0 :(得分:0)
您几乎肯定会在startActivity()
意图中传递过多数据。由于固定的活页夹缓冲区大小,您仅限于传递1MiB。还要考虑缓冲区适用于您的进程中的所有活页夹事务,因此如果您正在执行其他一些将进入缓冲区的IPC。
你真的不应该传递大块数据。如果您需要“传递”此类内容,请传递对它们的引用(例如,文件路径或可以检索它们的内容URI)。