原本代码:
private Runnable advPlay = new Runnable() {
@Override
public void run() {
int num = advViewPager.getChildCount();
if(num > 0){
if(1 == num){
//advViewPager.setCurrentItem(0);
}else{
int currentIndex = advViewPager.getCurrentItem();
if((num -1) != currentIndex){
advViewPager.setCurrentItem(advViewPager.getCurrentItem() + 1);
}else{
//最后一张广告
advViewPager.setCurrentItem(0);
}
handler.postDelayed(advPlay, ADVWAITTIME);
}
}
}
};
这样在进行图片轮播的时候,到advViewPager.setCurrentItem(0)就出现程序卡住,然后出现ANR;
后面看了下别人的代码,改成这样:
private Runnable advPlay = new Runnable() {
@Override
public void run() {
int num = advViewPager.getChildCount();
if(num > 0){
if(1 == num){
//advViewPager.setCurrentItem(0);
}else{
int currentIndex = advViewPager.getCurrentItem();
// if((num -1) != currentIndex){
advViewPager.setCurrentItem(advViewPager.getCurrentItem() + 1);
// }else{
//最后一张广告
// advViewPager.setCurrentItem(0);
// }
handler.postDelayed(advPlay, ADVWAITTIME);
}
}
}
};
说明:注释相关代码后,发现就可以了。
具体原因不明。