什么是广播
- 广播是Android四大组件之一,全称BroadcastReceiver。
- 广播分为发送和接收方,就算没有接收方,发送方也会发送数据。
- 广播可以实现跨多个页面的数据通信。
- 广播可以实现跨进程间的数据通讯。
广播使用
静态注册无序广播
public class MainActivity extends AppCompatActivity {
private Button zfBt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
zfBt = findViewById(R.id.zf_btn);
zfBt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent("zhifubao");
sendBroadcast(intent);
}
});
}
}
新建一个类继承BroadcastReceiver
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context,"哎",Toast.LENGTH_SHORT).show();
}
}
静态无序广播在androigmanifest文件中注册
<receiver android:name=".MyReceiver">
<intent-filter>
<action android:name="zhifubao"/>
</intent-filter>
</receiver>
动态注册无序广播
public class MainActivity extends AppCompatActivity {
private MyReceiver1 receiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("zhifubao");
receiver = new MyReceiver1();
registerReceiver(receiver,intentFilter);
}
class MyReceiver1 extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "哎", Toast.LENGTH_SHORT).show();
}
}
}
静态注册有序广播
public class BroadcastActivity extends AppCompatActivity {
//定义一个按钮点击发送广播
private Button broadBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_broadcast);
//绑定id与设置监听事件
broadBtn=findViewById(R.id.broad_btn);
broadBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent("com.send");
//有序广播需要用sendOrderedBroadcast()方法发送
sendOrderedBroadcast(intent,null);
}
});
}
}
public class GostBroadcast extends BroadcastReceiver {
private String TAG="GostBroadcast";
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "收到请回答GostBroadcast", Toast.LENGTH_SHORT).show();
Log.d(TAG, "广播++++++++++++++++++++++++++++++++++++");
//终止此广播,不在传递下去
abortBroadcast();
}
}
<receiver android:name=".GostBroadcast">
<intent-filter android:priority="100" >
<action android:name="com.send"/>
</intent-filter>
</receiver>
<receiver android:name=".SecondBroadcast">
<intent-filter android:priority="1000" >
<action android:name="com.send"/>
</intent-filter>
</receiver>
动态注册有序广播
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_broad_b);
// 1. 实例化BroadcastReceiver子类 & IntentFilter
GostBroadcast mBroadcastReceiver = new GostBroadcast();
SecondBroadcast secondBroadcast=new SecondBroadcast();
IntentFilter intentFilter1 = new IntentFilter();
IntentFilter intentFilter2 = new IntentFilter();
// 2. 设置接收广播的类型
intentFilter1.addAction("com.send");
//运用setPriority()方法设置优先级关系
intentFilter1.setPriority(1000);
intentFilter2.addAction("com.send");
intentFilter2.setPriority(1000);
// 3. 动态注册:调用Context的registerReceiver()方法
registerReceiver(mBroadcastReceiver, intentFilter1);
registerReceiver(secondBroadcast, intentFilter2);
}
@Override
protected void onDestroy() {
super.onDestroy();
//移除广播接收器
unregisterReceiver(mBroadcastReceiver);
unregisterReceiver(secondBroadcast);
}
}
public class BroadcastActivity extends AppCompatActivity {
private Button broadBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_broadcast);
broadBtn=findViewById(R.id.broad_btn);
broadBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent("com.send");
//有序广播需要用sendOrderedBroadcast()方法发送
sendOrderedBroadcast(intent,null);
}
});
}
}
本文详细介绍了Android中的广播机制,包括广播的发送与接收方式、静态与动态注册的区别、有序与无序广播的特点及应用场景,并提供了具体的代码示例。
1976

被折叠的 条评论
为什么被折叠?



