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