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


相关推荐

  • 怎样学习工业PLC

    怎样学习工业PLC可编程控制器是集计算机技术、通讯技术、自动控制技术为一体的工业控制装置。对于初学者来说掌握了plc基本原理,熟悉常用的编程方法,在进行简单系统编程时尚可以运用自如,但对较为复杂的控制系统设计往往力不从心,要想在PLC应用方面得心应手,学习者除了要建立正确的学习方法,深入学习plc编程技巧,最重要的是相关知识的学习。下面从六个方面谈谈我的教学心得。一、多收集程序范例、增加编程经验在PLC的编程方…

    2022年10月18日
    3
  • mediumtext_【紧急求助】关于mediumtext类型数据的调用

    mediumtext_【紧急求助】关于mediumtext类型数据的调用你的位置:问答吧->PHP基础->问题详情【紧急求助】关于mediumtext类型数据的调用请问各位大大,我如何将mediumtext类型的数据调用输入textarea文本框中呢?主要的问题是mediumtext内没有回车完全可以正常调用,但一旦有回车就无法进行调用,文本框中输入不了任何数据!恳请各位大大不…

    2022年6月12日
    28
  • VBoxManage安装

    VBoxManage安装扩展包的版本需要与VirtualBox的版本一致,通过帮助可以查看VirtualBox的版本信息,然后在http://download.virtualbox.org/virtualbox/寻找对应的版本。接下来执行安装命令[root@root下载]#VBoxManageextpackinstall./Oracle_VM_VirtualBox_Extension_Pack…

    2022年6月11日
    51
  • sit、qas、dev、pet「建议收藏」

    sit、qas、dev、pet「建议收藏」SIT:SystemIntegrateTest系统整合测试QAS:QualityAssurancesystem质量保证DEV:Development开发PET:PerformanceEvaluationTest性能测试

    2022年6月28日
    35
  • 博客园博客美化相关文章目录

    博客园博客美化相关文章目录

    2021年9月4日
    62
  • CentOs6.5安装Docker中:No package docker-io available[通俗易懂]

    CentOs6.5安装Docker中:No package docker-io available[通俗易懂]在Centos中安装docker时出现:No package docker-io available 说是yum没有找到docker这个包,

    2022年6月13日
    31

发表回复

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

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