什么是广播
广播是android四大组件之一,全称BroadcastReceiver
广播分为发送方和接收方,就算没有接收方,发送方也会发送数据
广播可以实现跨多个页面的数据通信
广播可以实现跨进程(APP)之间的数据通信
静态注册无序广播
首先我们在接受方的APP写一个类继承BroadcastReceiver
public class Receive extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "zouni", Toast.LENGTH_SHORT).show();
}
}
之后我们在发送方APP写一个按钮,发送广播
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button button;
//发送者
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BindId();
}
private void BindId() {
button=findViewById(R.id.static_tv);
button.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.cast_btn:
//发送广播
Intent intent=new Intent("zouni");
sendBroadcast(intent);
break;
}
}
}
最后就是静态注册了在接受方的manifest中静态注册
<receiver android:name=".Receive">
<intent-filter >
<action android:name="zouni"></action>//接收频道的方法
</intent-filter>
</receiver>
动态注册无序广播
动态注册与静态注册的差别不大,仅仅是将在mainfest中的注册在mainActivity中
public class MainActivity extends AppCompatActivity {
private Receive receive;
private Receive2 receive2;
@Override
//接收者
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
receive=new Receive();
IntentFilter intentFilter=new IntentFilter();
intentFilter.addAction("zouni");
//动态注册广播接收器
registerReceiver(receive,intentFilter);
}
}
静态注册有序广播
静态注册有序广播与静态注册无序广播差别不大,仅仅只要在静态注册的标签中添加一条表示速度的标签
<receiver android:name=".Receive">
<intent-filter android:priority="">//分号里面填写-1000到1000中的数值
<action android:name="zouni"></action>
</intent-filter>
</receiver>
动态注册有序广播
动态注册有序广播与无序广播差不多,仅仅只需要添加一行代码
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
receive=new Receive();
IntentFilter intentFilter=new IntentFilter();
intentFilter.addAction("zouni");
intentFilter.setPriority(1000);
//动态注册广播接收器
registerReceiver(receive,intentFilter);
receive2=new Receive2();
IntentFilter filter=new IntentFilter();
filter.addAction("zouni");
filter.setPriority(-1000);
//动态注册广播接收器
registerReceiver(receive2,filter);
}