在Android中,AlarmManager提供了不受休眠状态的系统定时功能,其一般使用方法如下。

1、创建一个BroadcastReceiver类的子类,接收定时器事件:

public class MyReceiver extends BroadcastReceiver {......}

2、在AndroidMenifest.xml中定义上述广播事件接收类的定义:

3、在程序中在需要时设置定时器:

Intent intent = new Intent(context,MyReceiver.class);  PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP , SystemClock.elapsedRealtime() + ms, pendingIntent);

经过ms毫秒之后,MyReceiver会被调用,从而实现定时触发。

 

但是,上述实现存在一个问题:如果设置定时器的进程被杀死之后,定时器事件就不会触发。而在Android中,系统在需要时会自动终止后台进程,因此在定时过程中,进程被杀死的可能性是非常之大的,特别是在一些内存较少的设备中,基本上后台进程所设置的定时器很难被触发。

为了让定时器在进程被终止后还能触发,需要对上述实现做一个小的修改:在AndroidMefest.xml中如下定义广播接收类:


 


 


 

 

更多相关文章

  1. android 自定义xml属性
  2. Android 多进程学习
  3. Android自定义对话框的大小
  4. android构建自定义View和自定义组件
  5. 使用attrs.xml自定义属性
  6. 自定义android圆形ImageView
  7. Android 开发:(十四)NavigationBar篇-自定义顶部导航栏
  8. Android 自定义PopupWindow实现悬浮窗效果
  9. Android 源码中添加自定义服务并提供给上层使用

随机推荐

  1. MySQL 5.0.96 for Windows x86 32位绿色
  2. mysql创建删除表的实例详解
  3. MySQL两种临时表的用法详解
  4. 初探SQL语句复合主键与联合主键
  5. SQL执行步骤的具体分析
  6. 浅析mysql union和union all
  7. mysql having用法解析
  8. mysql oracle和sqlserver分页查询实例解
  9. mysql中的limit用法有哪些(推荐)
  10. MySQL删除有外键约束的表数据方法介绍