广播

1.什么是广播
安卓的广播机制就是说,在一些操作完成后,会发送广播,对应的程序会接收到这个广播,并做出相应的处理。
特点:发送方不关心接收方是否接收到数据,也不关心接收方如何处理数据。
三种广播类型:有序广播,无序广播,粘滞广播;
两种广播注册方式:静态广播,动态广播;
发出广播的代码:
建议,每一段接收方都单独建一个app

public class MainActivity extends AppCompatActivity {
private Button bt;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        bt=findViewById(R.id.bt);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent("zaqqqq");//根据下面每个实例中对应的数据来改变参数
                 sendBroadcast(intent);//注册无序广播时用
          sendOrderedBroadcast(intent,null);//第二参数自定义权限;注册有序广播时用
            }
        });
    }
}
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.zhang.guangbo.MainActivity">

    <Button
        android:id="@+id/bt"
        android:layout_width="match_parent"
        android:layout_height="100dp" />

</android.support.constraint.ConstraintLayout>

2.静态注册无序广播示例:
注册静态后,继承BroadcastReceiver类时,要单独建一个内部类,不然无法运行,我反正是这样的,可以自己试一试

 <receiver android:name=".bo"> //注册广播

         <intent-filter> 
         <action android:name="zaq" />          
         </intent-filter> 
         </receiver> 
public class bo extends BroadcastReceiver {//继承BroadcastReceiver类,
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "收到", Toast.LENGTH_SHORT).show();
    }
}

3.动态注册无序广播示例:

public class Main2Activity extends AppCompatActivity {
guang as;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        IntentFilter filter=new IntentFilter();
        filter.addAction("zaqq");
        as=new guang();
        registerReceiver(as,filter);//注册打开广播
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(as);//关闭广播
    }

    class guang extends BroadcastReceiver{


        @Override
        public void onReceive(Context context, Intent intent) {
            Toast.makeText(Main2Activity.this, "接收", Toast.LENGTH_SHORT).show();
        }
    }
}

4.静态注册有序广播示例:

   <receiver android:name=".qw">
        <intent-filter>
            <action
                android:name="zaqqq"
                android:priority="100" />
        </intent-filter>
    </receiver>
public class qw extends BroadcastReceiver {


    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "第一", Toast.LENGTH_SHORT).show();
        abortBroadcast();
    }
}

5.动态注册有序广播示例:

public class Main3Activity extends AppCompatActivity {

asd a;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);


        a=new asd();
        IntentFilter as=new IntentFilter();
        as.addAction("zaqqqq");
        as.setPriority(1000);//设置优先级
        registerReceiver(a,as);
    }


 @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(a);//关闭广播
    }


   public class asd extends BroadcastReceiver{


        @Override
        public void onReceive(Context context, Intent intent) {
            Toast.makeText(Main3Activity.this, "第一", Toast.LENGTH_SHORT).show();

        }
    }
}

优先级范围:-1000~~1000;
同等优先级的情况下,会先接收动态广播,后接受静态广播;
动态广播不是常驻,Activity退出后,会被销毁

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值