应用壁纸时的TransactionTooLargeException

时间:2016-07-31 17:09:58

标签: java android multithreading

我知道当系统中的服务之间传输大量数据时会发生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) 

我该如何解决这个问题?

0 个答案:

没有答案