ScheduledExecutorService问题

今天做项目的时候发现我的轮播图竟然一下跳了两下,之前一直不知道原因,还以为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);
    }
所以在用别人的代码的时候,一定要谨慎再谨慎,要知其所以然,要不会很麻烦的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值