zoukankan      html  css  js  c++  java
  • 22 广播的几种创建和发送方式

    • 静态方式
      创建一个类继承BroadcastReceiver
    public class MyBroadCastReceiver01 extends BroadcastReceiver{
    
        /**
         * 就一个生命周期      普通广播10s
         */
        @Override
        public void onReceive(Context context, Intent intent) {
            // TODO Auto-generated method stub
    
        }
    
    }
    

    并在manifest中<application>标签中写

    <!--权限值范围越大接受的广播顺序越靠前-->
    <!--权限值范围(-10000到10000)-->
     <receiver android:name="继承BroadcastReceiver 的类的包名.类名">
                <intent-filter 
                    android:priority="权限值大小" >
                    <action android:name="你的意图"/>
                </intent-filter>
            </receiver>

    那么你将可以接受意图相同的广播
    或者发送广播时指定你(此时意图可不写)
    如:

    package com.qf.day22_broadcastreceiver_demo1;
    
    import android.app.Activity;
    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 MySendClick(View v){
    
            Intent intent = new Intent(MainActivity.this, MyBroadCastReceiver01.class);
            intent.putExtra("str", "疯狗咬人");
            //发送普通的广播
            sendBroadcast(intent);
    
        }
    
    
    
    }
    
    • 动态方式
      随便一个类继承BroadcastReceiver 内部类也可
    BroadcastReceiver receicer=new BroadcastReceiver() {
    
                @Override
                public void onReceive(Context context, Intent intent) {
                    // TODO Auto-generated method stub
    
                }
            };

    注册权限

        //获取意图过滤器
            IntentFilter intentFilter = new IntentFilter();
            //添加Action
            intentFilter.addAction("qq.weixin.mm");
    registerReceiver(receicer, intentFilter);
    一般我们在onresume注册 然后在onstop取消注册
    

    取消注册

    unregisterReceiver(receicer);

    发送广播两种方法
    普通广播 :其他广播接受则无法阻拦或者修改广播发送其他接受者

    Intent intent = new Intent();
    intent.setAction("cctv.hlj.beijin");
    intent.putExtra("str", "iphone7");
    //普通广播 
    sendBroadcast(intent);
    

    有序广播根据广播接受顺序发送 ,其他广播接受者可以接受修改此广播在发送给其他人

    Intent intent = new Intent();
            intent.setAction("cctv.hlj.beijin");
            intent.putExtra("str", "iphone7");
    
    
            //有序广播1
    
            sendOrderedBroadcast(intent, null);
    
            //有序广播2 并设置最终接受者 不管abortBroadcast();依然最后收到
            sendOrderedBroadcast(intent, null,new BroadcastReceiver(){
    
                @Override
                public void onReceive(Context context, Intent intent) {
                    // TODO Auto-generated method stub
    
                }
    
            }, null, 0, null, null);

  • 相关阅读:
    EJB>依赖注入(dependency injection) 小强斋
    EJB>自定义安全域 小强斋
    EJB>定时服务(Timer Service) 小强斋
    EJB>依赖注入(dependency injection) 小强斋
    EJB>定时服务(Timer Service) 小强斋
    EJB>安全服务的具体开发 小强斋
    EJB>JMS(Java Message Service)和消息驱动bean 小强斋
    EJB>拦截器(Interceptor) 小强斋
    《做最好的员工》第二章:好员工擅长合作
    教你29招,让你在社交,职场上人人对你刮目相看 !
  • 原文地址:https://www.cnblogs.com/muyuge/p/6152199.html
Copyright © 2011-2022 走看看