Android中使用AlarmManager需注意设置进程属性

在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中如下定义广播接收类:

android alarmmanager进程,Android中使用AlarmManager需注意设置进程属性相关推荐

  1. android关于控件中setTag(key,Object)的设置的相关问题

    setTag () 是 Android 的 View 类中很有用的一个方法,可以用它来给控件附加一些信息,在很多场合下都得到妙用. 所以抛出IllegalArgumentException 的原因就在 ...

  2. Android Studio 4.2 中Button的Backgroud背景设置默认为蓝紫色且无法修改的问题,及Button控件中英文字母全部默认显示为大写的解决方法

    Button背景色无法修改 问题简述 在修改Button的背景颜色时,始终无法修改颜色为设置的颜色,且颜色始终为默认的蓝紫色: <Buttonandroid:id="@+id/btn_ ...

  3. linux编程两个子进程,Linux中fork同时创建多个子进程的方法

    怎么创建多个进程呢?我说那还不容易,看下边代码: //省略必要头文件 int main() { pid_t pid[2]; int i; printf("This is %d\n" ...

  4. linux进程通信中有名管道的特点,linux进程通信之(四):有名管道的读与写

    前面我们说了无名管道,下面我们来说说有名管道,请看下面一段代码: fifo_write.c: #include#include#include#include#include#include#incl ...

  5. linux中杀死指定进程,Linux中通过 kill命令 杀死指定进程

    一  杀死指定进程 现知道有一个curl线程正在运行,需要杀死 anggang@barry$ curl -y 30 -Y 1 -m 300 -x 8.8.8.8:808 -o html_baidu h ...

  6. html设置无效字符,使用innerHTML属性向head中插入字符时报“无法设置 innerHTML 属性。 该操作的目标元件无效”的错误...

    向head中动态插入script文件,代码如下: var sc = document.createElement("script"); sc.src = "//www.c ...

  7. 设置java进程名称_如何为Java程序设置进程名称? - java

    如果启动了Java程序,它将在系统进程中监视名称java.许多Java程序很难区分.因此,如果存在设置名称的方法,它将很好地显示在过程监视器中.我知道这在不同的操作系统上可能会有所不同. 一个简单的方 ...

  8. java中setStroke_Java调用setStroke()方法设置笔画属性的语法 原创

    默认情况下,Graphics 绘图类使用的笔画属性是粗细为1个像素的正方形,而Java2D的Graphics2D类可以调用setStroke()方法设置笔画的属性,如改变线条的粗细.虚实和定义线段端点 ...

  9. php文本框的属性,在PHP中,为文本框设置“name”属性的方法是() 答案:为不同文本框表单元素分别设置不同的“name”属性值...

    因谓某零件者当力论,材之则当称RP0.600MPa二>,有四种材之则与刘性足曰,若只图则,何种材宜?.俟:RP0.二二1800MPa,A = 2% 以何项不属孙富谓杜十娘之恶意与言()耳:南归, ...

最新文章

  1. ios手机怎么连接adb命令_手机蓝牙怎么连接汽车蓝牙放音乐,车载蓝牙播放器怎么用...
  2. 如果有一天程序员再也不忙了
  3. xshell 打开文件跳转到最后_xshell的快捷键(非常实用)
  4. Drupal 7中 page.tpl.php 的可用变量
  5. 利用JEXL实现动态表达式编译
  6. vue-cli3使用svg图标的详细步骤
  7. 【JEECG dubbo专题】Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
  8. 输出前k大的数(信息学奥赛一本通-T1235)
  9. linux下maxwell安装教程,完美起航-Maxwell采集binlog系列(二)-Linux系统安装MySQL
  10. 关于公司通过CMMI3级认证
  11. 几种常用的视频接口(端子)
  12. ArcGIS加载Excel数据连接到数据库失败的解决办法
  13. 电机正反转的远程计算机控制,plc控制电机正反转原理图
  14. Vue2在使用Element-UI的分页组件遇到的问题(如PageSize,PageNum等)
  15. 查找算法——adjacent_find
  16. 智能对话系统:Unit对话API
  17. vscode连接寒武纪开发容器
  18. 【密码岛OJ】1753 马走日题解
  19. word2016修改批注名字
  20. 申请澳洲八大,IB成绩多高才有胜算?

热门文章

  1. matplotlib的基本使用1
  2. 19-for循环语句
  3. 图的存储以及深度优先以及广度优先遍历
  4. java图像处理之拉普拉斯锐化和一阶微分梯度锐化
  5. spark.mllib源码阅读:GradientBoostedTrees
  6. 【Scala谜题】继承
  7. 【NetApp】ROOT VOLUME NOT WORKING PROPERLY: RECOVERY REQUIRED
  8. JS事件及其兼容用法
  9. 单IP无TMG拓扑Lync Server 2013:活动目录
  10. Centos 的inotify和rsync文件实时同步