zoukankan      html  css  js  c++  java
  • BroadcastReceiver的两种注册方法

    /* 1.静态注册先在androidanifest receiver里面注册reiver
    2.在intent事先写入启动广播Intent intent=new Intent(MainActivity.this, MyReceiver.class);
    3.广播信息,intent.putExtra("name","hello");
    4.sendBroadcast(intent)启动广播 */

    public class MainActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.btnsendbroad).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(MainActivity.this, MyReceiver.class); intent.putExtra("name", "linhong");
    sendBroadcast(intent); //静态注册,androidanifest receiver } }); } }

    声明一个类继承BroadcastReceiver,在重写onReceiver()方法

    /*  1. 在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastReceiver是对发送出来的Broadcast进行过滤接受并响应的一类组件。  
    2. 所有已经注册的BroadcastReceiver会检查注册时的IntentFilter是否与发送的Intent相匹配,若匹配则就会调用BroadcastReceiver的onReceive()方法。
    所以当我们定义一个BroadcastReceiver的时候,都需要实现onReceive()方法。 */

    import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class MyReceiver extends BroadcastReceiver { public static final String action="com.example.broadcast.intent.action.MyReceiver"; //action定义:"包名.intent.action.name";name随便 public void onReceive(Context context, Intent intent) { System.out.println("onReceive..."+intent.getStringExtra("name")); } }
    //动态注册广播

    registerReceiver(BroadcastReceiver receiver, IntentFilterfilter)

    第一个参数是我们要处理广播的BroadcastReceiver (广播接收者,可以是系统的,也可以是自定义的),第二个参数是意图过滤器。

     public class MainActivity extends Activity {
    
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);   
            findViewById(R.id.btnRegisterbroadcast).setOnClickListener(new OnClickListener() {
                
                @Override
                public void onClick(View v) {
                    
                    registerReceiver(receiver, new IntentFilter(MyReceiver.action));//注册到那个广播
                }
            });
            findViewById(R.id.btnunRegisterbroadcast).setOnClickListener(new OnClickListener() {
        
                public void onClick(View v) {
                    
                    unregisterReceiver(receiver);//注销广播               }
            });
            
            findViewById(R.id.btnsendbroad).setOnClickListener(new OnClickListener() {
                
                @Override
                public void onClick(View v) {
                    
                    Intent intent=new Intent(MyReceiver.action);
                    intent.putExtra("name", "linhong_hello world");
                    sendBroadcast(intent);
                    /*
                     * 当动态创建时候,点击这个按钮没反应,因为
                     * 没有注册到androidmainfest,要动态注册
                     * registerReceiver注册到那个receiver上
                     * 点击Register broadcast,在点击send broacast才能发送
                     * 点击unRegister注销 broadcast,在点击send broadcast不能发送
                     */
                    
                }
            });
        }
     public    final MyReceiver receiver=new MyReceiver(); //dynamic register
        
    }
  • 相关阅读:
    sax解析xml案例二
    mysql之删除重复数据
    Android之Intent探究
    struts2之Action名称的搜索顺序
    struts2自定义拦截器二——模拟session超时的处理
    struts2之防止表单重复提交
    Android之日期及时间选择对话框
    sax解析xml案例一
    Android之单选按钮对话框
    查询修改nls_database_parameters系统配置
  • 原文地址:https://www.cnblogs.com/linhong/p/4203809.html
Copyright © 2011-2022 走看看