Android 使用广播这种异步机制来处理组件之间的消息传递。所谓异步就是广的发送方和接收方不需要互相等待,对广播的接受并不会影响本身的正常工作。

收发广播:

1、发送广播

在应用层,通常发送方组件需要定义一个Intent对象,用于封装要发送的信息,并指定其action属性用于匹配,然后在组件中使用所在ContentsendBroadcast()方法,将Intent发送出去。

2、接收广播

接收方再接收某一个广播时,需要该广播在被发送之前,注册一个BroadcastReceiver(广播接受者),将其action属性设置为与要接收的广播的action属性相同的值。在注册BroadCastReceiver时,Android提供两种方法。一种是在java代码中调用registerReceiver()方法动态注册。另一种是在配置文件中使用<register>标签静态注册。

下面分别通过具体的例子看两种方法的使用。

示例1:动态注册BroadcastReceiver

public class MainActivity extends Activity {                                                            private BroadcastReceiver br=new BroadcastReceiver() {                                                                     @Override        public void onReceive(Context context, Intent intent) {                                                                             int level = intent.getIntExtra("level", 0);// level:系统所提供的得到当前电量的一个键            int scale = intent.getIntExtra("scale", 100);            tv.setText(level * 100 / scale + "%");        }    };                                                             private TextView tv;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        tv=(TextView) findViewById(R.id.textView1);                                                                     registerReceiver(br, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));    }}


示例2:静态注册BroadcastReceiver

程序入口文件:MainActivity.java:

public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                                            Intent intent =new Intent(this,MyBroadcastReveiver.class);        intent.putExtra("message", "Hello");                                            sendBroadcast(intent);                                        }}


MyBroadcastReveiver.java


public class MyBroadcastReveiver extends BroadcastReceiver{    @Override    public void onReceive(Context context, Intent intent) {                                         System.out.println(intent.getStringExtra("message"));    }}


在配置文件中注册:

<receiver android:name="MyBroadcastReveiver"></receiver>




更多相关文章

  1. Android(安卓)View从源码的角度分析事件的注册和接收
  2. WebSocket实现Android客户端之间的简单通讯
  3. 成功的向android推送信息——android推技术!
  4. android DownloadManager广播事件:下载完成、通知栏点击事件
  5. 广播+ Service详解、通知和权限-Android基础知识整理
  6. Android开机广播无效问题(手机Root后)
  7. 第五章 全局大喇叭---详解广播机制(Broadcast Receiver )
  8. Android开发22——广播接收者BroadcastReceiver的原理和注册方式
  9. 监听Android设备网络变化 - 亲测在华为Emui8.0 以及 Android原生

随机推荐

  1. android之NFC基础技术分享
  2. Android(安卓)Service创建USB HOST通信
  3. Android(安卓)4.0应用界面设计分析
  4. Android的路接下来该怎么走?
  5. Android(安卓)KitKat 4.4 Wifi移植之AP模
  6. IOS和Android(安卓)OpenGL游戏引擎的集成
  7. Android基础笔记(二)-数据存储和界面展现
  8. 【Android】源码分析 - Handler消息机制
  9. Android(安卓)页面惯性回弹效果,Nested接
  10. Android(安卓)M 新的运行时权限开发者需