android的四大组件:
Activity、Service、BroadCast(广播)、ContentProvider
BroadCast Receiver
-
四大组件之一,必须在清单(androidManifest.xml)文件中进行注册
-
是在组件之间传播数据(Intent)的一种机制
-
APP哪块用到了广播?
-
电话
-
短信
-
电量
-
WIFI是否连接
-
Android中出现的第一个错误?
在组件中进行耗时操作,就会报application no response (ANR)
广播接收者一种有几种?
标准广播
动态注册 使用java代码注册
静态注册 直接在androidManifest.xml注册
有序广播
实现简单的静态注册
1.创建广播接收者
2.在AndroidManifest.xml中对广播接收者进行注册
//注册动态广播接受者
MyDymnicReceiver myDymnicReceiver=new MyDymnicReceiver();
IntentFilter intentFilter=new IntentFilter();
intentFilter.addAction("HOPU2");
registerReceiver(myDymnicReceiver,intentFilter);
3.发送广播
//发送广播给静态接受者
Intent intent=new Intent();
intent.setPackage(getPackageName());
intent.setAction("HOPU");
intent.putExtra("info","你好你好");
sendBroadcast(intent);
实现
简单的动态注册
//声明容器
private Button button,button2;
//创建内部内
class MyDymnicReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Log.i("动态广播接受者",intent.getStringExtra("info"));
}
}
//注册动态广播接受者
MyDymnicReceiver myDymnicReceiver=new MyDymnicReceiver();
IntentFilter intentFilter=new IntentFilter();
intentFilter.addAction("HOPU2");
registerReceiver(myDymnicReceiver,intentFilter);
//发送动态广播接受者
button2=findViewById(R.id.button2);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent();
intent.setAction("HOPU2");
intent.putExtra("info","hello hello");
sendBroadcast(intent);
}
@Override
protected void onDestroy() {
super.onDestroy();
//反注册
unregisterReceiver(myDymnicReceiver);
}