您的位置:首页 > 移动开发 > Android开发

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

2013-01-08 19:43 232 查看
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);


新手刚学习,有错误的地方欢迎指正。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: