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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

发表回复

您的电子邮箱地址不会被公开。

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