MENU

ClassCastException: android.os.BinderProxy cannot be cast

July 5, 2018 • Read: 198 • Android

在使用bindService时遇到这个问题,反复对比网上的别人的代码,没有任何问题,直接把网上的代码复制到我的项目里也没有人任何问题,但是

直接使用我的Service就有问题,提示

03-27 13:16:36.873  10403-10403/com.sample.android:bdservice_v1 E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.ClassCastException: android.os.BinderProxy cannot be cast to com.octo.android.robospice.SpiceService$SpiceServiceBinder
            at com.octo.android.robospice.SpiceManager$SpiceServiceConnection.onServiceConnected(SpiceManager.java:1084)
            at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1131)
            at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1148)
            at android.os.Handler.handleCallback(Handler.java:725)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:153)
            at android.app.ActivityThread.main(ActivityThread.java:5297)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
            at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:126)
            at dalvik.system.NativeStart.main(Native Method)

搜了半天,在Stack Overflow找到答案

原文:

I know it’s old, but thought I’d answer as I’ve just solved this myself. This (for me) is due to having android:process in my Service declaration of the application manifest. Simply removing that solved my issue immediately.

大意是在manifest里加了 android:process时Service运行在另外的进程中,想起了之前为了让servic保持存活,所以将service运行在了独立的进程,去掉后 android:process 就正常了!如果想跨进程通信 只能用广播,或者AIDL了