BroadcastReceiver的生命周期

BroadcastReceiver的生命周期

  BroadcastReceiver在android中是一特色功能.android系统的很多消息(如系统启动,新短信,来电话等)都通过BroadcastReceiver来分发.BroadcastReceiver的生命周期是短暂的,而且是消息一到达则创建执行完毕就立刻销毁的.为了说明这一点,我通过注册一个Alarm Service每7秒钟触发产生一次BroadcastReceive事件.

 

以下是BroadcastReceive的实现

protected static final class AlarmReceiver extends BroadcastReceiver{ public AlarmReceiver() { //查看类创建的进程id和线程id Log.i("AlarmReceiver.AlarmReceiver()", Calendar.getInstance().getTime().toLocaleString()); Log.i("AlarmReceiver.AlarmReceiver() -> pid", String.valueOf(android.os.Process.myPid())); Log.i("AlarmReceiver.AlarmReceiver() -> tid", String.valueOf(android.os.Process.myTid())); } @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub Log.i("AlarmReceiver.onReceive()", Calendar.getInstance().getTime().toLocaleString()); } }

 

通过一个”Start”按钮和一个”Stop”按钮来控制消息.

public void onClick(View arg0) { // TODO Auto-generated method stub switch(arg0.getId()){ case R.id.btnStart: Log.i("current pid", String.valueOf(android.os.Process.myPid())); Log.i("current tid", String.valueOf(android.os.Process.myTid())); ((AlarmManager)this.getSystemService(Context.ALARM_SERVICE)) .setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 7*1000, PendingIntent.getBroadcast(this, 0, new Intent(this,AlarmReceiver.class), 0) ); break; case R.id.btnStop: ((AlarmManager)this.getSystemService(Context.ALARM_SERVICE)) .cancel(PendingIntent.getBroadcast(this, 0, new Intent(this,AlarmReceiver.class), 0)); break; } }

 

打开logCat选择I,运行清理掉所有日志点击”Start”按钮

BroadcastReceiver的生命周期

从上图可以看到AlarmReceiver类的实例是每触发一次就新建一次的,而且和程序是在同一个进程同一线程内.

 

转载于:https://my.oschina.net/droidwolf/blog/285417

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109788.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 2021github仓库操作流程手册指南「建议收藏」

    2021github仓库操作流程手册指南「建议收藏」文章目录1.git操作2.git简介3.git安装4.git使用1.git初始化2.git设置用户信息3.git项目的拉取1.创建仓库2.本地初始化3.查看当前是否存在自己的账号信息并配置(包含步骤4)4.基础配置5.初始化内容6.开始引入自己的项目的地址7.更新操作8.git文件的添加保存和推送到github9.git文件的修改删除推送github10.gitpush操作每次都需要输入账号密码的解决办法5.总结至此git的仓库创建,仓库拉取到本地,文件的添加修改删除提交已经完成。其中遇到

    2022年7月16日
    19
  • IntelliJ IDEA 修改内存大小,使得idea运行更流畅。

    IntelliJ IDEA 修改内存大小,使得idea运行更流畅。IntelliJIDEA使用教程(总目录篇)idea有个配置文件,可以设置内存大小的,就跟咱的jvm的内存里面的堆大小,栈大小等等,可以设置的,而且设置了之后,你这个的性能就会得到提升。具体看下面怎么修改。先说所要修改的文件idea.vmoptions的位置,这个不同的平台,估计名称可能有些差别。mac的如下图具体怎么找到这个地方的,刚刚使用mac的估计不会,老手就会啦,…

    2025年7月24日
    2
  • vim背景颜色详细设置_vim显示行号命令

    vim背景颜色详细设置_vim显示行号命令改变行号文字色:highlightLineNrguifg=red改变行号的背景色:highlightLineNrguibg=white如果是在控制台下,则把guifg中的gui替换成cterm即可,如下:highlightLineNrctermfg=red:highlightLineNrctermbg=white———————-…

    2022年9月30日
    3
  • 数据结构与算法(十六):平衡二叉树

    数据结构与算法(十六):平衡二叉树一、什么是平衡二叉树1.概述平衡二叉树(AVL树)是一种带有平衡条件的二叉搜索树。它的特性如下:AVL树的左右两个子树的高度差的绝对值不超过1AVL树的左右两个子树都是一棵平衡二叉树举个例子

    2022年8月16日
    5
  • 服务器主板插显卡进不了系统,关于换了显卡后进不了系统的问题「建议收藏」

    服务器主板插显卡进不了系统,关于换了显卡后进不了系统的问题「建议收藏」显卡常见故障诊断如下(1)显卡接触不良故障:显卡接触不良通常会引起无法开机且有报警声或系统不稳定死机等故障。造成显卡接触不良的原因主要是显卡金手指被氧化、灰尘、显卡品质差或机箱挡板问题等。对于金手指被氧化造成的接触不良,可以使用橡皮擦拭金手指来解决;对于灰尘引起的接触不良,一般清除灰尘后即可解决;对于硬件品质造成的接触不良,通常通过替换法来检测,一般采用更换显卡来解决;对于机箱挡板问题造成的接触不…

    2022年6月18日
    75
  • 2021 navicat激活码【2021.8最新】

    (2021 navicat激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/ide…

    2022年3月27日
    154

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号