您的位置:首页 > 移动开发 > Android开发

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
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: