android学习笔记---广播机制

1:注册broadcastReceiver,有两种方式,一种是在AndroidManifest.xml里面注册,这样的注册在程序没有启动的时候,也会收到来自android系统的广播信息,第二种是在程序里面注册,第一步首先生成一个继承BoardcastReceiver 的Receiver类,然后使用一个 IntentFilter,在这个IntentFilter里面加上这个Receiver想要接受的广播信息种类就可以注册了,然后在程序down掉的时候,注销Receiver,就可以在程序没有启动的时候不接受android系统的广播信息了。

2:广播的过程可以看成这样一个过程,把想要广播的数据封装在Intent对象里,再封装进一个过滤器对象,再将这个Intent对象广播出去,就可以使符合过滤器要求的Receiver接收到这个Intent了。


AndroidManifest.xml里面注册

<receiver android:name=".TestReceive">
            <intent-filter >
                <action android:name="android.intent.action.CAMERA_BUTTON"/>
            </intent-filter>
        </receiver>

在Activity 里面的Oncreate 方法里动态注册

SecReceiver bc = new SecReceiver(myView);
IntentFilter iFilter = new IntentFilter();
iFilter.addAction(MY_ACTION);
BCTestActivity.this.registerReceiver(bc, iFilter);

封装需要广播出去的Intent对象

Intent intent = new Intent();
intent.setAction(MY_ACTION);    
intent.putExtra("editString", str);
BCTestActivity.this.sendBroadcast(intent);  //这行代码相当于把这个Intent对象扔出去就不管了

这是实现OnReceive的 对象

public class SecReceiver extends BroadcastReceiver
{

	private TextView myView=null;
	public SecReceiver(TextView view) {
		// TODO Auto-generated constructor stub
		myView=view;
	}
	public SecReceiver()
	{
		
	}
	@Override
	public void onReceive(Context context, Intent intent) {   //形参Intent 就是被广播扔出来的Intent对象。里面有各种数据
		// TODO Auto-generated method stub
		Toast.makeText(context, "got", Toast.LENGTH_SHORT).show();
		String str="";
		str=intent.getStringExtra("editString").toString();
		myView.setText(str);
	}
	
}

注销Receiver

TestBC2Activity.this.unregisterReceiver(secReceiver);


新手刚学习,有错误的地方欢迎指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值