`
hemowolf
  • 浏览: 151947 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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"按钮

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

 

3
3
分享到:
评论
1 楼 thereisnousername 2011-03-16  
学习Android...............感谢楼主分享

相关推荐

    Android四大基本组件介绍与生命周期

    Android四大基本组件介绍与生命周期 Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器......

    Android开发中Widget的生命周期实例分析

    Widget是android中桌面小控件,创建时必须继承AppWidgetProvider,AppWidgetProvider其实就是继承了BroadcastReceiver的Receiver的一种,widget有以下几个生命周期方法: 1.onEnabled方法:此方法在Widget第一次被...

    Android编程中的四大基本组件与生命周期详解

    本文实例讲述了Android编程中的四大基本组件与生命周期。分享给大家供大家参考,具体如下: Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器。 一:了解...

    Android:Intent&Activity,Service,BroadcastReceiver

    Android:Intent页面跳转,Activity生命周期,Service服务,广播代码实例

    疯狂Android讲义第10章源码(Android服务Service_详解)

     10.1.4 Service的生命周期 381  10.2 跨进程调用Service  (AIDL服务) 382  10.2.1 AIDL服务简介 382  10.2.2 创建AIDL文件 383  10.2.3 将接口暴露给客户端 383  10.2.4 客户端访问AIDLService 385  10.3...

    andriod精华学习教程

    子线程里做这些任务(因为BroadcastReceiver的生命周期短),替代的是,如 果响应Intent广播需要执行一个耗时的动作的话,应用程序应该启动一个 Service。顺便提及一句,你也应该避免在Intent Receiver里启动一个...

    Android服务Service_详解

    Service的生命周期 绑定Activity和Service 在BroadcastReceiver中启动Service 系统服务 时间服务 在线程中更新GUI组件 AIDL服务 在AIDL服务中传递复杂的数据

    Andriod 服务Servive详解

     8.1 Service起步  8.1.1 Service的生命周期  8.1.2 绑定Activity和Service  8.1.3 在BroadcastReceiver中启动Ser..  8.2.1 获得系统服务+  8.2.2 在模拟器上模拟重力感应  8.3.1 计时器:Chronometer...

    Android服务Service详解

    本章内容服务(Service)是Android... Service的生命周期  绑定Activity和Service  在BroadcastReceiver中启动Service  系统服务  时间服务  在线程中更新GUI组件  AIDL服务  在AIDL服务中传递复杂的数据  

    Android系统的四大组件详解

    Android四大基本组件介绍与生命周期Android四大基本组件分别是Activity,Service服务,ContentProvider内容提供者,BroadcastReceiver广播接收器。  Android四大基本组件介绍与生命周期  Android四大基本组件分别是...

    实验四-Android基本组件交互实验.doc

    Service组件 Service一般由一个Activity或其他Context对象来启动,当启动Service之后,该Se rvice将会在后台运行,及时启动这个Service的Activity或其他组件的生命周期已经结 束,Service仍然会继续运行,直到自己...

    Android服务.pdf

    Service 的生命周期 绑定 Activity和 Service 在 BroadcastReceiver 中启动 Service 系统服务 时间服务 在线程中更新 GUI 组件 AIDL服务 在 AIDL服务中传递复杂的数据

    Android异步回调中的UI同步性问题分析

    从最常见的Activity生命周期回调开始,到BroadcastReceiver、Service以及Sqlite等。Activity、BroadcastReceiver和Service这些基本组件的回调路径和过程也就是通常意义上所谓的“生命周期”。同时,在处理具体的业务...

    疯狂Android讲义(第2版)源代码 第10章~第13章

    Service的生命周期; 10.2、跨进程调用Service(AIDL服务):创建AIDL文件; 将接口暴露给客户端; 客户端访问AIDLService; 10.3、电话管理器:TelephoneManager; 10.4、短信管理器:SmsManager; 10.5、音频管理器:...

    为了面试收集的一些java和安卓的知识点

    内存泄露的根本原因:长生命周期的对象持有短生命周期的对象。短周期对象就无法及时释放。情况如下:静态集合类引起内存泄露,各种数据链接没有关闭,内部类,单例 避免 OOM 异常: 程序需要申请一段“大”内存,...

    2024年最新Android面试题.docx

    1 Activity 与 Fragment 之间常见的几种通信方式? 2 LaunchMode 的应用场景? 3 BroadcastReceiver 与LocalBroadcastReceiver 有什么区别?...6 谈一谈startService和bindService的区别,生命周期以及使用场景? ...

    计算机毕业设计 - Android系统原理与开发要点详解-培训课件,保证可靠运行,计算机毕业生可参考,免费资源下载

    接着,课件详细讲解了Android开发的关键技术和要点,包括Activity和Service的生命周期管理、Intent和BroadcastReceiver的通信机制、数据存储和访问、网络编程以及UI设计等。通过结合实例和代码演示,使开发者能够...

    Android实验六.doc

    4) SecActivity.java,广播的生命周期回调函数; 5) StaticReceiver.java 被静态注册的广播接收器; 6) DynamicReceiver.java 被动态注册的广播接收器; 7) 在 AndroidManifest.xml 中注册 StaticReceiver; 8) 在 ...

    Android典型技术模块开发详解

    3.2 Activity的生命周期 3.3 基本用法 3.3.1 创建Activity 3.3.2 启动Activity 3.3.3 窗口Activity 3.3.4 Activity生命周期验证 3.4 Activity之间通信 3.4.1 Activity传递一般类型 3.4.2 Activity传递对象类型 3.4.2...

Global site tag (gtag.js) - Google Analytics