需求首页广告轮播,想想决定用timer 实现:
private void startTimer() {
timer=new Timer();
timer.schedule(task, 2000, 4000);
}
private java.util.TimerTask task=new java.util.TimerTask() {
@Override
public void run() {
mHandler.sendEmptyMessage(TIME_TO_SCROLL_VIEW);
}
};
能正常实现需求,但是感觉 如果从首页进去其他页面,那么首页的广告在轮播没什么意义,应该在幕后的时候停止掉: 然后在回来的时候 启动:
@Override
public void onPause() {
super.onPause();
if(timer!=null){
timer.cancel();
}
}
@Override
public void onResume() {
super.onResume();
if(topTitleSize>1 ){
if(timer!=null){
timer.cancel();
}
startTimer();
}
}
当进入其他页面返回回来的时候 直接报错: schedule has added.... ,提示已经添加过了,网上搜了下:
After a TimerTask is canceled, it cannot run again, you have to create a new instance.
于是修改为:
private void startTimer() {
timer=new Timer();
timer.schedule(new java.util.TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
mHandler.sendEmptyMessage(TIME_TO_SCROLL_VIEW);
}
}, 2000, 4000);
}
运行下,终于达到目标,运行正常,页面在后台可暂停,回到前台继续切换。