我知道当系统中的服务之间传输大量数据时会发生TransactionTooLargeException
。通常,如果我要传输大量数据,我会有某种控制权,但在这种情况下,当我使用壁纸时,我没有那么多的控制权。
我正在应用壁纸,首先使用android-image-cropper
进行裁剪,然后通过
WallpaperManager.setBitmap(bitmap);
...在单独的线程中,以避免重叠UI线程。现在,当我按下“应用墙纸”,然后等待一段时间,然后返回主屏幕时,它完美无缺,但是当我应用壁纸然后立即返回主屏幕时,我收到应用程序已崩溃的警报,以及这个日志:
07-31 18:50:41.611 32720-32720/elementary.elementarywallpapers E/JavaBinder: !!! FAILED BINDER TRANSACTION !!! (parcel size = 16385936)
07-31 18:50:41.614 32720-32720/elementary.elementarywallpapers D/AndroidRuntime: Shutting down VM
07-31 18:50:41.621 32720-32720/elementary.elementarywallpapers E/AndroidRuntime: FATAL EXCEPTION: main
Process: elementary.elementarywallpapers, PID: 32720
java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel size 16385936 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 16385936 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)
我该如何解决这个问题?