Android 常见Bug及Solutions备忘

1.Canvas.clipPath :java.lang.UnsupportedOperationException

Bug原因:
出现原因是4.0硬件加速出的问题

解决方案:
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB)
{
   myCusomView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}


2. Android 2.x上 Listview selector铺满背景问题

Bug原因:
 Android < 3.0 bug 如果list selector中使用@color(即ColorDrawable)就会导致该问题

解决方案:
使用其他Drawable替代,例如ShapeDrawable


3. ListView ExpandableListView分割线消失问题

Bug原因:
ListView分割线设置方法setDivider、setDividerHeight调用顺序问题,在setDivider之前调用setDividerHeight是无效,因为setDivider方法会将dividerHeight重置为0(想见ListView.setDivider方法)

解决方案:
在setDivider之后调用setDividerHeight


4. Android Toast不显示问题

Bug原因:
常见原因分两类:1.使用正确但应用系统设置中“显示通知”被取消  2.Toast使用错误(如非UI线程使用Toast、Context错误、遗漏.show()调用等)

解决方案:
第一种情况去应用设置里面将“显示通知”(通常在强制停止下面)勾选上
第二种情况修正用法即可


5. 复用StringBuilder忘了清空易引发OOM

Bug原因:
复用StringBuilder未清空之前的内容导致OOM(尤其是在循环中)

解决方案:
复用StringBuilder之前一定要清空内容

6. View getHitRect出错

Bug原因:
系统bug,在view做完动画后,getHintRect返回可能出错(http://stackoverflow.com/questions/17750116/strange-view-gethitrect-behaviour)

解决方案:
Rect outRect = new Rect();
int[] location = new int[2];
mSeekBar.getDrawingRect(outRect);
mSeekBar.getLocationOnScreen(location);
outRect.offset(location[0], location[1]);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值