概述
创建服务执行,在线程中等待执行相关操作:
protected void StartChangeAd() {
// 当Activity不可见的时候停止切换
if(scheduledExecutorService==null||scheduledExecutorService.isShutdown()){
scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
// 当Activity显示出来后,等待3秒,每3秒钟切换一次图片显示
scheduledExecutorService.scheduleAtFixedRate(new ScrollTask(), 3, 3, TimeUnit.SECONDS);
}
}
子线程中执行切换任务
private class ScrollTask implements Runnable {
public void run() {
synchronized (main_ad_viewPager) {
currentItem = (currentItem + 1) % imageViews.size();
Message message=new Message();
message.arg1=3;
mainHandler.sendMessage(message); // 通过Handler切换图片
}
}
}
由于子线程中不能做UI操作,通过Handler切换图片
Handler mainHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch(msg.arg1){
// 切换当前显示的图片
case 3:
main_ad_viewPager.setCurrentItem(currentItem);
break;
}
}
};
关于ScheduledExecutorService这个服务我的理解也不是很深,查找了一些相关资料。
在ExecutorService的基础上,ScheduledExecutorService提供了按时间安排执行任务的功能,它提供的方法主要有:
schedule(task,initDelay):安排所提交的Callable或Runnable任务在initDelay指定的时间后执行。scheduleAtFixedRate():安排所提交的Runnable任务按指定的间隔重复执行scheduleWithFixedDelay():安排所提交的Runnable任务在每次执行完后,等待delay所指定的时间后重复执行。注意我们可以用TimeUnit来制定时间单位,这也是Java5.0里新的特征,5.0以前的记时单位是微秒,现在可精确到奈秒。关于TimeUnit的枚举常量MICROSECONDS微秒 一百万分之一秒(就是毫秒/1000)MILLISECONDS毫秒 千分之一秒NANOSECONDS毫微秒 十亿分之一秒(就是微秒/1000)SECONDS秒MINUTES分钟HOURS小时DAYS天
其他相关方法可以查阅TimeUnit
的API。
最后
以上就是简单水池为你收集整理的android轮播time,android等待、延时切换广告轮播 ScheduledExecutorService服务的使用的全部内容,希望文章能够帮你解决android轮播time,android等待、延时切换广告轮播 ScheduledExecutorService服务的使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复