Timer全集

thread+sleep
2 Handler.postDelayed(Runnable, long)
3 (单thread) Timer + TimerTask
ScheduledExecutorService + TimerTask方式(多线程 )
5 AlarmManager实现精确定时
6 RxJava 方式(java8支持Android7.0支持)
方案
适用场景
thread+sleep
TimerTask不可控 (不推荐)
 Handler.postDelayed
实用非耗时任务(推荐非耗时任务)
Timer+TimerTask
TimerTask的启动和取消以及启动时间可控制;
单线程:如果执行耗时任务,可能多个TimerTask并行执行,单线程不支持。
仅能应用在非耗时任务
ScheduledExecutorService + TimerTask
解决单线程定时器痛点,支持多线程并发执行Task。
耗时 任务 最理想的定时任务实现方式(比如每一个定时周期都有网络接口请求) (推荐耗时任务)
AlarmManager
使用于精确地定时,比如比赛半小时提醒(军事术语: 定点清除

倒计时控件:
  • TickerView  https://github.com/robinhood/ticker.git
  • CountDownTimer倒计时组件。(场景:注册倒计时)
  • Google APIChronometer计时器(场景:打折商品倒计时)
https://github.com/arthurlang/AndroidTimeCounter.git

倒计时天坑:
  • 需求:滑动展示倒计时列表--延时如何保证倒计时的实时更新技术点。
解决计时器可能延迟开始计时的场景下服务端接口返回时间戳和客户端时间不一致的问题方法:
1、 接口返回数据的时刻加上系统时间戳(SystemClock.elapsedRealtime()),在需要展现的时候,在加上最新的时间戳。通过差值,获取最新的倒计时时间数据。(精度相对高)参考 Chronometer。
2、需要展现的时候实时获取服务端时间和接口时间比较,对比时间差。(精度相对差)

参考文献: http://blog.csdn.net/s003603u/article/details/53322874
  • java timer JAVA TIMER用法学习

你可能感兴趣的:(android移动开发)