1.java.lang.UnsatisfiedLinkErrorjava
多半是so加載姿式不對。so沒加載進來或者so初始化失敗。把三方庫的初始化放回application試試
複製代碼
2.java.lang.ArrayIndexOutOfBoundsExceptionandroid
數組越界,普通的數組越界仍是比較容易發現的。下面場景的數組越界不容易被發現。
1.下拉刷新數據尚未返回時,迅速向上滑。
主要仍是寫法錯誤,在數據尚未返回時就刪除了數據源,致使向上滑動時數據源已經沒有了。
2.下拉刷新數據尚未返回時點擊item。
錯誤的寫法和上面是同樣的
3.須要使用網絡返回的數據position,而網絡請求數據沒有返回
複製代碼
3.java.lang.NullPointerException數據庫
空指針異常,普通的空指針異常也是比較容易發現的。下面的場景比較難發現。
網絡請求沒有返回致使數據實體爲空,而在點擊或者其餘操做中又使用了該實體。
複製代碼
4.Unable to add window -- token android.os.BinderProxy@1fb9679 is not valid; is your activity running?數組
dialog所依附的view已經不存在
複製代碼
當面頁面關閉了,可是依附在當前頁面的dialog卻沒有被關閉,形成內存泄漏。
複製代碼
6.Unable to add window -- token android.app.LocalActivityManager$LocalActivityRecord @xxx is not valid; is your activity running?bash
參數context 指定成了this,即指向當前子Activity的context。
但子Activity是動態建立的,不能保證一直存在。
複製代碼
7.Fragment already added: KnowledgeTreeDialogFragment微信
Fragment重複添加,當心DialogFragment也屬於fragment,在show時會調用add方法
複製代碼
override fun show(manager: FragmentManager?, tag: String?) {
try {
if (manager == null || manager.isDestroyed) {
return
}
manager.beginTransaction().remove(this).commit()
super.show(manager, tag)
} catch (e: Exception) {
//防止onSaveInstanceState以後執行add fragment
e.printStackTrace()
}
}
複製代碼
8.Can not perform this action after onSaveInstanceState網絡
Fragment在onSaveInstanceState作操做就會報這個錯誤,
把commit換成commitAllowingStateLoss可解決這個問題,會忽略mStateSaved。
複製代碼
9.handler建議用靜態類和弱引用的方式使用,防止內存泄漏多線程
10.java.lang.IllegalStateException intent.getStringExtra("orderNo") must not be nullapp
從表意上看是Activity跳轉的時候orderNo沒有傳,實際開發中這麼傻逼的行爲應該比較少。
我這邊的場景是 小米 MI 5S 微信支付回來會從新去intent中取orderNo,這時候的intent是微信支付發的,
裏面是沒有orderNo的。因此致使這個報錯。
複製代碼
11.TransactionTooLargeExceptionide
Intent傳參數據量偏大,bundle緩衝區最大1M
複製代碼
12.不要用ScrollView嵌套RecyclerView、ListView。這樣會把item一次性加載到內存中。推薦使用NestedScrollView。
13.多線程操做數據庫須要使用事務。
14.頁面關閉關閉動畫。
15.回調看狀況須要判斷一下對象控件是否還存在。
16.網絡相關對象不要用lateinit