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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • js 数组转json和json转数组

    js 数组转json和json转数组js数组转json和json转数组数组转json串json字符串转数组数组转json串vararr=[1,2,3,{a:1}];JSON.stringify(arr);json字符串转数组varjsonStr='[1,2,3,{“a”:1}]’;JSON.parse(jsonStr);

    2022年6月21日
    27
  • Java程序设计(高级及专题)- 多线程[通俗易懂]

    Java程序设计(高级及专题)- 多线程[通俗易懂]Java程序设计(高级及专题)- 多线程

    2022年4月22日
    37
  • 软件架构与设计模式_软件架构设计

    软件架构与设计模式_软件架构设计什么是架构?软件体系结构通常被称为架构,指可以预制和可重构的软件框架结构。架构尚处在发展期,对于其定义,学术界尚未形成一个统一的意见,而不同角度的视点也会造成软件体系结构的不同理解,以下是一些主流的标准观点。ANSI/IEEE610.12-1990软件工程标准词汇对于体系结构定义是:“体系架构是以构件、构件之间的关系、构件与环境之间的关系为内容的某一系统的基本组…

    2022年8月31日
    1
  • 树莓派3B+ 人脸识别(OpenCV)

    树莓派3B+ 人脸识别(OpenCV)树莓派3B+人脸识别(OpenCV)相信大家都看了前面的OpenCV安装和人脸检测教程,有了基础后,现在我们正式进入重头戏——人脸识别的教程。注意:该教程面向python2.7+OpenCV2.4.9(官方源)其它版本需进行一些小的修改,文中会具体注明。1.生成人脸识别数据目录结构./data数据根目录./data/gener…

    2022年6月25日
    20
  • 微服务网关kong实战[通俗易懂]

    微服务网关kong实战[通俗易懂]   当前互联网特别是移动互联网,设备与平台之间的交互的基础是服务API接口。以API驱动的开发是团队之间最常用的协作方式,而作为交互的基石,API的准确性,完整性和及时性是影响开发效率的关键。在生产环境中,创建、发布、维护、监控和保护任意规模的API,接收和处理成千上万个并发API的调用,管理流量、授权和访问控制、监控以及API版本也是采用微服务架构所必须解决的问题。解决上述…

    2022年6月26日
    55
  • 解决github下载慢及–recursive慢的问题(亲测好用)[通俗易懂]

    在gitclone的地址,例如https://github.com/pytorch/pytorch,改为https://gitclone.com/github.com/pytorch/pytorch,也即加上前缀gitclone.com,然后就可以愉快的下载了(亲测有效)。对于子模块,可以先不要在gitclone的时候加上–recursive,等主体部分下载完之后,该文件夹中有个隐藏文件称为:.gitmodules,把子项目中的url地址同样加上gitclone.com前缀,然后利用gits..

    2022年4月12日
    79

发表回复

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

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