浅学BroadcastReceiver

什么是广播

广播是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);

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值