Android官方广播,Android -- Android的广播机制(BroadcastReceiver)

本文详细介绍了Android应用中如何通过广播实现组件间异步通信,包括动态注册BroadcastReceiver的方法(在MainActivity中实例化并调用registerReceiver()),以及静态注册(在配置文件中通过IntentFilter标签)。通过实例演示了如何在接收方处理电池电量变化通知。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

收发广播:

1、发送广播

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

2、接收广播

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

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

示例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"));

}

}

在配置文件中注册:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值