`
hemowolf
  • 浏览: 154393 次
  • 性别: 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...............感谢楼主分享

相关推荐

    AndroidLifeCycle,处理android生命周期的简单方法.zip

    3. BroadcastReceiver生命周期:BroadcastReceiver通常用于接收系统广播消息,其生命周期非常短暂。在接收到广播时,onReceive()方法会被调用,所有工作需要在此方法中快速完成,因为它不能执行耗时操作,否则可能...

    BroadcastReceiver

    ### BroadcastReceiver生命周期 `BroadcastReceiver`的生命周期非常短暂,主要包含两个关键方法:`onReceive()`。当广播事件到达时,系统会调用`onReceive()`方法,开发者应该在此方法中执行所有必要的操作,因为...

    安卓四大组件——BroadcastReceiver(广播)

    **BroadcastReceiver生命周期** BroadcastReceiver的生命周期非常短暂,主要包含两个阶段:创建和销毁。onReceive()方法是其核心,所有处理逻辑都在这个方法内完成,因此应该尽可能减少在此方法中的耗时操作,以避免...

    A0306广播BroadcastReceiver的使用1

    1.3 BroadcastReceiver生命周期 BroadcastReceiver的生命很短暂,它的`onReceive()`方法执行完成后,系统就会回收该对象。因此,所有的处理工作应该在`onReceive()`方法内快速完成,不应在此处执行耗时操作,如网络...

    DemoLifeCycle

    3. BroadcastReceiver生命周期:广播接收器用于接收系统或应用发送的广播消息。它的生命周期非常短暂,主要在onReceive()方法中处理广播事件。 4. ContentProvider生命周期:ContentProvider用于管理应用间的数据...

    android-broadcast学习

    三、BroadcastReceiver生命周期 BroadcastReceiver的生命周期由onReceive()方法构成。当广播Intent匹配到BroadcastReceiver时,系统会调用此方法,开发者在此处理业务逻辑。由于生命周期短暂,所有操作应尽快完成,...

    android demo

    3. **BroadcastReceiver生命周期** - BroadcastReceiver没有完整的生命周期,只有onReceive()方法。当接收到匹配的广播时,系统会调用此方法,处理完广播后,BroadcastReceiver就会被销毁。 4. **Intent与...

    android高级面试题

    BroadCastReceiver生命周期 BroadCastReceiver是Android中的一个组件,用于接收系统或应用发出的广播。其生命周期较短,只在OnReceive方法执行期间处于活跃状态。在OnReceive执行完毕后,BroadCastReceiver将变为...

    浅谈Android生命周期

    Android生命周期是指一个Activity、Service、BroadcastReceiver或ContentProvider从创建到销毁的过程。每个组件都有其特定的生命周期方法,开发者需要根据这些方法来编写代码,确保应用程序能够正确响应系统事件,如...

    毕业论文安卓55天气(app).doc

    该技术原理包括 Android 组件模型、 Intent 机制、Activity 生命周期、Service 生命周期、BroadcastReceiver 生命周期、Content Provider 生命周期等。 4. 基本组件和常用设计模式 Android 中的基本组件包括 ...

    全局事件BroadCast

    4. **BroadcastReceiver生命周期**: BroadcastReceiver的生命周期非常短暂,主要包含onReceive()方法。当接收到广播时,系统会调用这个方法,开发者应在此处处理广播事件,处理速度要快,避免阻塞主线程。 5. **...

    BroadcastReveiver广播的代码

    三、BroadcastReceiver生命周期 BroadcastReceiver的生命周期非常短暂,主要由两个关键方法组成: - onReceive(Context context, Intent intent):当BroadcastReceiver接收到匹配的广播时,系统会调用此方法。在这...

    android服务和广播PPT学习教案.pptx

    由于BroadcastReceiver生命周期的特性,不适合在此执行耗时操作,建议将耗时任务交给Service处理。同时,由于BroadcastReceiver所在进程可能因内存需求被系统优先杀死,因此使用子线程不是一个可靠的解决方案。 ...

    广播接受者(Broadcast Receiver)

    3. **BroadcastReceiver生命周期**: 广播接收者的生命周期非常短暂,仅在接收到广播时创建,并在处理完意图后销毁。因此,接收者不应执行耗时操作,否则可能导致ANR(Application Not Responding)错误。 4. **...

    应用源码之21.广播事件处理(2).zip

    2. **BroadcastReceiver生命周期**:尽管BroadcastReceiver自身没有完整的生命周期,但onReceive()方法执行完毕后,系统会自动释放资源。若需要执行耗时操作,建议启动Service。 3. **权限管理**:某些系统广播需要...

    广播事件处理

    二、BroadcastReceiver生命周期 BroadcastReceiver的生命周期非常短暂,通常只包含onReceive()方法。在这个方法中,你应该快速完成所有操作,因为系统可能在任何时候回收BroadcastReceiver的内存。 ```java @...

    2020美团Android面试真题解析1

    1. **BroadcastReceiver生命周期** - `onReceive()`: 接收到广播时调用,执行时间需控制在10秒以内,否则可能导致ANR。 - 注册方式: - 静态注册: 在Manifest中注册,即使应用退出仍可接收广播。 - 动态注册: 在...

    Android应用开发原理

    Android应用开发基于一套完整的框架和模式,其中包括了核心组件(Activity、Service、BroadcastReceiver、ContentProvider)、进程与线程管理、远程过程调用以及组件生命周期管理等。了解这些基本概念对于构建高质量...

    android的Broadcast Receiver应用机制

    这种方式适用于需要灵活控制BroadcastReceiver生命周期的情况。 #### 五、示例分析 在给出的例子中,主要演示了如何创建一个BroadcastReceiver来接收系统启动完成的广播(`android.intent.action.BOOT_COMPLETED`)...

Global site tag (gtag.js) - Google Analytics