• 自定义无序广播和有序广播


    package com.example.order;
    import android.app.Activity;
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    public class MainActivity extends Activity {
       @Override
       protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
       }
       public void send(View v){
          Intent intent = new Intent();
          intent.setAction("com.example.order.CCTV");   
          /*
    
           * intent          :意图
           * receiverPermission :指定接收者的权限
           * resultReceiver     :最终的广播接收者
           * scheduler       :Handler
           * initialCode        :广播编码
           * initialData        :设置广播的数据,接收者getResultData()获取数据
           * initialExtras      :把数据设置到bundle,数据量大的时候用
           */
          //sendOrderedBroadcast(intent, null, new FinalReceiver(), new Handler(), 1,
    
          //    "给每个码农补贴¥10000元", null);//后两个参数设置数据 //发送自定义有序广播    
          sendBroadcast(intent);//发送自定义无序广播
       }
      
    
       /**
        * 无论签名的广播怎么拦截怎么终止
        * 都是最后一个接收到广播的接收者
        * 最终的广播接收者
        * 不要在清单文件中注册
       */
    
       public class FinalReceiver extends BroadcastReceiver{
          @Override
          public void onReceive(Context context, Intent intent) {
             System.out.println("最终接收者:"+getResultData());
          }    
       }
    }

    package com.example.code_famer;
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    public class HighCoderFamerReceiver extends BroadcastReceiver { 
       @Override
       public void onReceive(Context context, Intent intent) {
          if ("com.example.order.CCTV".equals(intent.getAction())) {
             String result = getResultData();        
             System.out.println("高级码农:"+result);
             //拦截终止广播
    //       abortBroadcast();        
             //修改广播里的数据
             setResultData("给每个码农补贴¥1000元");
          }
       }
    }

    package com.example.code_famer;
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    public class MiddleCoderFamerReceiver extends BroadcastReceiver {
       @Override
       public void onReceive(Context context, Intent intent) {
          if ("com.example.order.CCTV".equals(intent.getAction())) {
             String result = getResultData();        
             System.out.println("中级码农:"+result);        
             //修改广播里的数据
             setResultData("给每个码农买个糖吃");
          }
       }
    }

    package com.example.code_famer;
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    public class BirdCoderFamerReceiver extends BroadcastReceiver {
      @Override
       public void onReceive(Context context, Intent intent) {
          if ("com.example.order.CCTV".equals(intent.getAction())) {
             String result = getResultData();        
            System.out.println("菜鸟码农:"+result);       
          }
       }
    }

    清单文件中:
           <receiver android:name="com.example.code_famer.HighCoderFamerReceiver" >
                <intent-filter android:priority="1000">
                    <action android:name="com.example.order.CCTV" />
                </intent-filter>
            </receiver>      
            <receiver android:name="com.example.code_famer.MiddleCoderFamerReceiver" >
                <intent-filter android:priority="0">
                    <action android:name="com.example.order.CCTV" />
                </intent-filter>
            </receiver>      
            <receiver android:name="com.example.code_famer.BirdCoderFamerReceiver" >
                <intent-filter android:priority="-1000">
                    <action android:name="com.example.order.CCTV" />
                </intent-filter>
            </receiver>
     
    
  • 相关阅读:
    运维与自动化系列①运维与自动化概述
    Git系列②之部署企业级开源仓库gitlab服务器
    Git系列①之仓库管理互联网托管平台github.com的使用
    win10安装MarkdownPad 2报错This view has crashed的处理及md简单语法
    fpm定制化RPM包之nginx rpm包的制作
    mysql管理工具percona-toolkit-3简单使用介绍
    生产环境elasticsearch5.0报错IllegalArgumentException: number of documents in the index cannot exceed 2147483519的处理
    web缓存服务器varnish-4.1.6的部署及配置详解
    elasticsearch5.0.1集群排错的几个思路总结
    解决tomcat报错javax.imageio.IIOException: Can't create output stream!
  • 原文地址:https://www.cnblogs.com/loaderman/p/6416097.html
Copyright © 2020-2023  润新知