Android中设置定时器目前来看有两种方法,一种是基于handler的postDelayed方法,另一种是使用AlarmManager类。根据Android官方的描述

Note: The Alarm Manager is intended for cases where you want to have your application code run at a specific time, even if your application is not currently running. For normal timing operations (ticks, timeouts, etc) it is easier and much more efficient to useHandler.

也就是说使用第一种handler方法相对简单,在一个应用中定时执行任务的话,使用handler方法比较方便,并且由于是在同一个类中,类的一些变量值都可以在需要定时执行的任务中直接获得。而使用alarm manager的主要场合是在定期唤醒一些系统中本来没有打开的,或者其他的应用。

1.基于handler的postDelayed方法

private Handler handler = new Handler();private Runnable runnable = new Runnable() {    public void run()     {         // Do the stuff         handler.postDelayed(this, 1000);    }};
runnable.run();

通过handler.removeCallbacks(runnable)停止定时执行任务。

http://stackoverflow.com/a/11640073/17678002.

2.基于AlarmManager的方法

在Android的API demo中提供了alarmservice使用的详细的例子,在模拟器中可以直接看到apidemo的例子。在eclipse中可以直接导入sdk/samples目录下的ApiDemos工程。如果sdk下没有samples目录,可以通过Android sdk Manager来安装Samples for SDK.


apidemo中和alarm相关的页面如上面三个图所示。图中最上面显示的是activity所在ApiDemos整个应用中的路径。和alarm相关的都在App/Alarm路径下,一共有两个activity,一个是Alarm Controller,一个是Alarm Service。Alarm Controller展示的是通过AlarmManager实现指定未来某个时间执行一项功能、定时执行的设置与清除这三项功能。Alarm Service展示的是通过AlarmManager实现定时打开service的设置于清楚的两项功能。

通过alarm关键字进行搜索,可以发现ApiDemos工程中所有的和alarm相关的类如上图所示。一共有5个类。其中AlarmController.java,AlarmService.java对应主的Activity和AlarmManager的设置。AlarmService_Service.java是AlarmService.java定时唤醒功能所对应的service类。

http://developer.android.com/reference/android/app/AlarmManager.html

更多相关文章

  1. Selector的一些state使用
  2. 面试例题6:两种方法将图像显示在View上
  3. android photoview 图片放大缩放功能 ImageView
  4. 一个简单的Android圆形ProgressBar
  5. Android之Handler用法总结
  6. Android(安卓)NDK报错(Eclipse)及解决方法
  7. Android(安卓)更新UI的两个方法
  8. 使用迅雷代替SDK Manager快速下载Android(安卓)SDK相关
  9. 在Windows系统中使用NDK编译Android二进制文件并运行

随机推荐

  1. Github 星标 8K+ 这款国人开源的 Redis
  2. 苹果mac上超赞的AI照片编辑器:Luminar AI
  3. 2021年国内外五大BI厂商_商业智能工具推
  4. 小白专属mysql入门
  5. 手机内存不足应该怎么解决
  6. 最近做大数据面试官的感想
  7. 3,Structured Streaming使用checkpoint进
  8. 谈谈大数据岗位的价格问题
  9. Python While 循环语句
  10. 2,StructuredStreaming的事件时间和窗口操