Facebook ProfilePictureView导致FAILED BINDER TRANSACTION

时间:2017-03-13 15:37:13

标签: android facebook facebook-android-sdk

为了弄明白为什么我的应用程序一直在崩溃,我已经把我的头发拉了出来,我已经把它钉在了我的主要活动布局XML中。

<com.facebook.login.widget.ProfilePictureView
                        android:id="@+id/pp"
                        android:layout_gravity="center"
                        android:layout_height="match_parent"
                        android:layout_width="match_parent">
                    </com.facebook.login.widget.ProfilePictureView>

每当我在我的主要活动布局中有这个,并且我尝试创建任何新意图(新活动,Facebook登录或请求权限)我的应用程序崩溃了FAILED BINDER TRANSACTION和TransactionTooLargeException。

当我删除活动类中的个人资料图片代码时,这种情况仍然会发生。这似乎是出现了这样的观点,但我想不出原因。

这不是在我的主要测试设备上,而是在我尝试的所有模拟器和其他设备上。

stacktrace

03-13 15:29:21.347 28962-28962/uk.co.claytapp.taggerbath E/JavaBinder: !!! FAILED BINDER TRANSACTION !!!  (parcel size = 1443592)
03-13 15:29:21.348 28962-28962/uk.co.claytapp.taggerbath D/AndroidRuntime: Shutting down VM
03-13 15:29:21.348 28962-28962/uk.co.claytapp.taggerbath E/AndroidRuntime: FATAL EXCEPTION: main
                                                                           Process: uk.co.claytapp.taggerbath, PID: 28962
                                                                       java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel size 1443592 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 1443592 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) 

1 个答案:

答案 0 :(得分:1)

这很可能发生在您要导航的活动的onSaveInstanceState(Bundle outState)方法中。

要解决此问题,请将android:saveEnabled="false"添加到ProfilePictureView,如下所示:

    <com.facebook.login.widget.ProfilePictureView
        android:id="@+id/profilePicture"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:saveEnabled="false"
        facebook:com_facebook_preset_size="normal" />

这会阻止Android调用ProfilePictureView自己的onSaveInstanceState方法(无论如何,视图层次结构都存储在Activity中,因此不会受到影响)。