修复Crash原因(pointerIndex|修复Crash原因:pointerIndex out of range)

自从项目接手以来,腾讯Bugly一直也是上传过来各种各样的Bug。这不,如下图,又是传过来一个令人很奇特的Bug。
修复Crash原因(pointerIndex|修复Crash原因:pointerIndex out of range)
文章图片
打印桟 从打印桟来看,其实错误很简单,但又是很莫名其妙,ViewPager在做多点触控的时候,操作自己所绘制的图形时发生异常。根据项目中使用的ViewPager控件来看,出错的应该是在针对图片做多点触摸时发生的。
修复Crash原因(pointerIndex|修复Crash原因:pointerIndex out of range)
文章图片
出错的设备统计图全是Samsung 找到问题原因之后那就简单多了,上网百度,查找解决办法,网上的解决办法无非两种,一种是根据特定的Android 设备Rom,去修改源码然后去重新编译系统。这里我们直接Pass这个办法,我们无法去修改用户的系统,也无法去更改Samsung的Rom。此时我们还有另一种方法,自定义ViewPager在onInterceptTouchEvent方法和onTouchEvent方法中我们去捕获类似的bug。
代码如下:

@Override
public booleanonInterceptTouchEvent(MotionEvent ev) {
try{
return super.onInterceptTouchEvent(ev);
}catch(IllegalArgumentException ex) {
ex.printStackTrace();
}
return false;
}
@Override
public booleanonTouchEvent(MotionEvent ev) {
try{
return super.onTouchEvent(ev);
}catch(IllegalArgumentException ex) {
ex.printStackTrace();
}
return false;
}


【修复Crash原因(pointerIndex|修复Crash原因:pointerIndex out of range)】Ok,搞定。

    推荐阅读