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  }

 

转载于:https://www.cnblogs.com/linhong/p/4203809.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值