简介

Android中的四大组件是 Activity、Service、Broadcast和Content Provider。而Intent是一个对动作和行为的抽象描述,负责组件之间程序之间进行消息传递。那么Broadcast Receiver组件就提供了一种把Intent作为一个消息广播出去,由所有对其感兴趣的程序对其作出反应的机制。

实例

在Android中,广播(broadcast)是非常有用的功能。通过广播可以通知其他广播接受这某个事件发生了。比如电源不足,信号不好等。

下面我做了一个简单的demo,首先看看activity(BroadcastTest .java

        
  1. packagecom.android.broadcasttest;
  2. importandroid.app.Activity;
  3. importandroid.content.Intent;
  4. importandroid.os.Bundle;
  5. importandroid.view.View;
  6. importandroid.view.View.OnClickListener;
  7. importandroid.widget.Button;
  8. publicclassBroadcastTestextendsActivity{
  9. publicstaticfinalStringNEW_LIFEFORM_DETECTED=
  10. "com.android.broadcasttest.NEW_LIFEFORM";
  11. /**Calledwhentheactivityisfirstcreated.*/
  12. @Override
  13. publicvoidonCreate(BundlesavedInstanceState){
  14. super.onCreate(savedInstanceState);
  15. setContentView(R.layout.main);
  16. Buttonbtn0=(Button)findViewById(R.id.btn0);
  17. btn0.setOnClickListener(newOnClickListener(){
  18. publicvoidonClick(Viewv){
  19. Intentit=newIntent(NEW_LIFEFORM_DETECTED);
  20. sendBroadcast(it);
  21. }
  22. });
  23. }
  24. }

在这个activity中生成了一个按钮,当按下按钮的时候通过sendBroadcast()发送一个广播。

我们再看看广播接收者代码:

        
  1. packagecom.android.broadcasttest;
  2. importandroid.content.BroadcastReceiver;
  3. importandroid.content.Context;
  4. importandroid.content.Intent;
  5. importandroid.util.Log;
  6. importandroid.widget.Toast;
  7. publicclassMyBroadcastReceiverextendsBroadcastReceiver{
  8. publicstaticfinalStringBURN=
  9. "com.paad.alien.action.BURN_IT_WITH_FIRE";
  10. publicMyBroadcastReceiver(){
  11. Log.v("BROADCAST_TAG","myBroadCast");
  12. }
  13. @Override
  14. publicvoidonReceive(Contextcontext,Intentintent){
  15. //TODOAuto-generatedmethodstub
  16. Toast.makeText(context,"成功接收广播:",Toast.LENGTH_LONG).show();
  17. }
  18. }

在onReceive()中实现了当接收到广播所做的动作。

我们还需要在AndroidManifest.xml中注册该receiver

        
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <manifestxmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.android.broadcasttest"
  4. android:versionCode="1"
  5. android:versionName="1.0">
  6. <applicationandroid:icon="@drawable/icon"android:label="@string/app_name">
  7. <activityandroid:name=".BroadcastTest"
  8. android:label="@string/app_name">
  9. <intent-filter>
  10. <actionandroid:name="android.intent.action.MAIN"/>
  11. <categoryandroid:name="android.intent.category.LAUNCHER"/>
  12. </intent-filter>
  13. </activity>
  14. <receiverandroid:name=".MyBroadcastReceiver">
  15. <intent-filter>
  16. <actionandroid:name="com.android.broadcasttest.NEW_LIFEFORM"/>
  17. </intent-filter>
  18. </receiver>
  19. </application>
  20. <uses-sdkandroid:minSdkVersion="8"/>
  21. </manifest>

在receiver的action中定义了该receiver能够接受的广播。

麻雀虽小,五脏俱全

更多相关文章

  1. 编写Android自定义按钮
  2. Android ListView组件中androiddrawSelectorOnTop含义
  3. 三款Android炫酷Loading动画组件推荐
  4. Android 强大的开发支持库组件AppFromwork框架详解
  5. App"确定"按钮应该在左边还是右边?
  6. Android 自定义view组件
  7. Android:DropPopMenu — 显示位置跟随操作按钮显示的带箭头的弹出

随机推荐

  1. Android向服务器提交数据(方式:get、post、
  2. 【so文件】添加第三方so文件
  3. android去掉振动相关选项
  4. Android Studio必备插件
  5. android studio执行 Information:Gradle
  6. Android 实现简单截屏并保存为文件
  7. android中的类加载和静态成员变量的初始
  8. USB audio on Android(安卓)platform
  9. Android实现将Drawable资源ID存储到Sdcar
  10. Android开发 之 MultiDex (apk中生成多个d