快上网专注成都网站设计 成都网站制作 成都网站建设
成都网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

Android计时器和倒计时-创新互联

  • 成都创新互联公司专注于临淄网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供临淄营销型网站建设,临淄网站制作、临淄网页设计、临淄网站官网定制、微信小程序开发服务,打造临淄网络公司原创品牌,更为您提供临淄网站排名全网营销落地服务。
  • Android计时器和倒计时

  • 计时器

  1. 两个核心类 Timer 和 TimerTask

1) Timer核心方法

Java代码

  1. //Schedules the specified task for execution after the specified delay.

  2. void schedule(TimerTask task, long delay)

  3. //Schedules the specified task for repeated fixed-delay execution, beginning after the specified delay.

  4. void schedule(TimerTask task, long delay, long period)

第一个方法只执行一次;

第二个方式每隔period执行一次,delay表示每次执行的延时时间,其实主要表现在第一次的延时效果,比如delay设置为0,那么立马执行task内容,如果设置为1000,那么第一次执行task会有一秒的延时效果。

2) TimerTask用于继承(或者直接定义并初始化匿名类),并重写run方法,定义自己的业务逻辑。

3) 手动结束定时器,

Timer和TimerTask都有cancel方法,而且最好同时调用;

如果已经cancel,下次必须创建新的Timer才能schedule。

4) 如果你在当前的activity中schedule了一个task,但是没有等到task结束,就按Back键finish了当前的activity,Timer和TimerTask并不会自动cancel或者销毁,它还会在后台运行,此时如果你在task的某个阶段要调起一个控件(比如AlertDialog),而该控制依赖被销毁的activity,那么将会引发crash。

5) 例如对进度条实现每一秒递增的效果(主要代码)

Java代码  Android计时器和倒计时

  1. //总时长

  2. private static final long TOTAL_QUERY_MINUTES = 50;

  3. //比如每5秒去查询数据库

  4. private static final long QUERY_INTERVAL = 5 *1000;

  5. private static final int TIMER_SCHEDULE_CODE = 1;

  6. int timePassed=0;

  7. QueryTimerTask queryTask;

  8. private Timer timer;

  9. //显示定时器的效果

  10. ProgressBar statusBar;

  11. private Handler mHandler= new Handler(new Handler.Callback() {

  12.     @Override

  13.     public boolean handleMessage(Message msg) {

  14.         switch (msg.what) {

  15.             case TIMER_SCHEDULE_CODE:

  16.                 statusBar.setProgress(timePassed);

  17.                 //Log.w(TAG, "timePassed : " + timePassed + " -- TOTAL_QUERY_MINUTES : " + TOTAL_QUERY_MINUTES);

  18.                 if (timePassed>=TOTAL_QUERY_MINUTES){

  19.                     if (timer != null)

  20.                         timer.cancel();

  21.                     if (queryTask != null)

  22.                         queryTask.cancel();

  23.                     new AlertDialog.Builder(YourActivity.this).

  24.                             setTitle("超时通知").setMessage("已超时,是否继续等待?")

  25.                         .setPositiveButton("继续等待", new DialogInterface.OnClickListener() {

  26.                             public void onClick(DialogInterface dialog, int which) {

  27.                                 reSchedule();

  28.                             }

  29.                         })

  30.                         .setNegativeButton("取消任务", new DialogInterface.OnClickListener() {

  31.                             public void onClick(DialogInterface dialog, int which) {

  32.                                 //cancelTask();

  33.                             }

  34.                         }).show();

  35.                 break;

  36.             //....

  37.         }

  38.         return true;

  39.     }

  40. });

  41. void reSchedule() {

  42.     timePassed = 0;

  43.     if (timer != null) {

  44.         timer.cancel();

  45.     }

  46.     if (queryTask != null) {

  47.         queryTask.cancel();

  48.     }

  49.     timer = new Timer();

  50.     queryTask = new QueryTimerTask();

  51.     //每一秒执行一次,第一次有延时一秒的效果

  52.     timer.schedule(queryTask, 1000, 1000);

  53. }

  54. //自定义task

  55. class QueryTimerTask extends TimerTask {

  56.     @Override

  57.     public void run() {

  58.         //比如每过QUERY_INTERVAL去查询信息

  59.         if ((timePassed * 1000) % QUERY_INTERVAL == 0) {

  60.             //query();

  61.         }

  62.         timePassed++;

  63.         //通知handler去改变statusBar

  64.         Message message = mHandler.obtainMessage();

  65.         message.what = TIMER_SCHEDULE_CODE;

  66.         mHandler.sendMessage(message);

  67.     }

  68. }

 2. 倒计时

其实也可以用上面的方法实现,

安卓额外提供了CountdownTimer类,以后再补充

文章来源:http://itlanbao.com/preview.aspx#1,0

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


名称栏目:Android计时器和倒计时-创新互联
网页URL:http://6mz.cn/article/dsdcjp.html

其他资讯