赞
踩
今天做项目的时候发现我的轮播图竟然一下跳了两下,之前一直不知道原因,还以为handler不稳定造成的。试了很多方法都没搞定,今天早上因为fragment销毁了,重新进入布局造成了我的轮播图不会动了,因此在onresume方法里面又执行了一次转动轮播图的方法,结果就发现了轮播图又跳了2次!
我用的是ScheduledExecutorService来定时跳转的,因此我也好好研究了这个类。下面列出定时转动轮播的初始化代码:
scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
// 当Activity显示出来后,每两秒切换一次图片显示
scheduledExecutorService.scheduleAtFixedRate(mRunnable, 1, 3,TimeUnit.SECONDS);
深入研究了以后才发现自己被他的命名被骗了,以为这个服务是单例模式下的,只能创建一个对象,事实证明改成这样就可以了。
private void startAd() {
if(scheduledExecutorService!=null){
scheduledExecutorService.shutdown();
}
scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
// 当Activity显示出来后,每两秒切换一次图片显示
scheduledExecutorService.scheduleAtFixedRate(mRunnable, 1, 3,TimeUnit.SECONDS);
}
所以在用别人的代码的时候,一定要谨慎再谨慎,要知其所以然,要不会很麻烦的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。