一些問題記錄

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的內存空間,所以實際傳輸大小并沒有那么大

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容