Android -- Android的广播机制(BroadcastReceiver)
2013-09-16 10:39
513 查看
播Android 使用广播这种异步机制来处理组件之间的消息传递。所谓异步就是广的发送方和接收方不需要互相等待,对广播的接受并不会影响本身的正常工作。
收发广播:
1、发送广播
在应用层,通常发送方组件需要定义一个Intent对象,用于封装要发送的信息,并指定其action属性用于匹配,然后在组件中使用所在Content的sendBroadcast()方法,将Intent发送出去。
2、接收广播
接收方再接收某一个广播时,需要该广播在被发送之前,注册一个BroadcastReceiver(广播接受者),将其action属性设置为与要接收的广播的action属性相同的值。在注册BroadCastReceiver时,Android提供两种方法。一种是在java代码中调用registerReceiver()方法动态注册。另一种是在配置文件中使用<register>标签静态注册。
下面分别通过具体的例子看两种方法的使用。
示例1:动态注册BroadcastReceiver
示例2:静态注册BroadcastReceiver
程序入口文件:MainActivity.java:
MyBroadcastReveiver.java
在配置文件中注册:
本文出自 “天马行空” 博客,请务必保留此出处http://shaotao.blog.51cto.com/7606729/1297595
收发广播:
1、发送广播
在应用层,通常发送方组件需要定义一个Intent对象,用于封装要发送的信息,并指定其action属性用于匹配,然后在组件中使用所在Content的sendBroadcast()方法,将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>
本文出自 “天马行空” 博客,请务必保留此出处http://shaotao.blog.51cto.com/7606729/1297595
相关文章推荐
- android 广播机制Broadcast、BroadcastReceiver用法解读
- Android广播接收机制(BroadcastReceiver)
- BroadcastReceiver ---Android中的广播机制(发短信)
- 处女男学Android(十五)---Android 广播机制之Broadcast Receiver
- Android广播接收机制(BroadcastReceiver)
- android_BroadcastReceiver 广播机制
- Android之BroadcastReceiver讲义并通过广播机制实现短信窃听
- Android广播接收机制(BroadcastReceiver)
- android 之 Broadcast(广播) BroadcastReceiver(广播接收者)
- Android四大组件之四:BroadcastReceiver 广播接收器
- Android系统中的广播(Broadcast)机制简要介绍和学习计划
- android broadcast 广播机制对短信处理 获取短信内容
- Android四大组件之broadcastreceiver(广播)
- android之如何在两个activity之间传递handler_利用broadcast广播机制
- Android系统中的广播(Broadcast)机制简要介绍和学习计划
- Android广播(BroadcastReceiver)
- Android应用内广播LocalBroadcastManager机制详解
- Android系统中的广播(Broadcast)机制简要介绍
- Android中广播接收者BroadcastReceiver详解
- Android四大组件之Broadcast Receiver(广播)