1、報錯信息如下:
/zygote: Rejecting re-init on previously-failed class java.lang.Class<android.support.v4.view.ViewCompat$OnUnhandledKeyEventListenerWrapper>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/view/View$OnUnhandledKeyEventListener;
??
因為項目中使用的api等級和虛擬機api等級不一致導致的, 我項目中build.gradle sdk api用的28,虛擬機用的27,然后項目中用了28中的功能,虛擬機沒有這個功能,所以報錯了,修改虛擬機的api等級改成28就行了
??
implementation 'com.android.support:appcompat-v7:26.1.0'依賴也改成對應的版本
2、AIDL調用過程中,_reply.readExcption()報空指針問題。報錯如下:
ERROR/AndroidRuntime(9435): FATAL EXCEPTION: main
ERROR/AndroidRuntime(9435): java.lang.NullPointerException
ERROR/AndroidRuntime(9435): at android.os.Parcel.readException(Parcel.java:1328)
ERROR/AndroidRuntime(9435): at android.os.Parcel.readException(Parcel.java:1276)
??
這種問題一般都是服務端Service業務邏輯處理的時候報錯了,仔細檢查一下代碼吧。引起這個報錯的原因很多,看看服務端的問題。
3、Binder內存限制是1m-8k, 為什么一次調用最大傳輸數據只有大約507k?
Binder分配的內存是1m, 但是實際上一次調用超過大約507k,就會拋出TransactionTooLarge異常。
??
原因:Binder的線程池數量默認是15個,由15個線程共享這1MB-8KB的內存空間,所以實際傳輸大小并沒有那么大