出于timer的性能考虑,在使用viewPager+scheduleWithFixedDelay来实现自动循环滚动轮播图的时候,发现一个问题。当Activity进入onPause生命周期后,出现了轮播图延迟混乱的情况。
通过跟踪代码发现,在生命周期进入pause后,ScheduledExecutorService并没有shutdown掉,而当activity有 更新数据或重新启动executor而没有对上一个进行shutdown的时候,就会出现任务执行延迟混乱的情况。
解决方法:在ScheduledExecutorService初始化时,添加如下代码:
private ScheduledExecutorService executor;
if (executor != null) {
executor.shutdown();
}
参考文章:
> http://blog.youkuaiyun.com/huang_xw/article/details/7342662