Broadcast Receiver是指广播接收器,它和事件处理机制类似,只不过事件处理机制是程序组件级别的,而广播事件处理机制则是系统级别的。
事件的广播比较简单,同样还是创建一个Intent,通过设置action属性,再sendBroadcast()将广播发出;
事件的接受是定义一个类继承自BroadcastReceiver,覆盖onReceiver()方法,在该方法中响应事件。
1、自己定义BroadcastReceiver来处理广播事件
publicclassMainActivityextendsActivity {
privateButton b1;
@Override
publicvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.broadcast_demo);
b1 = (Button)findViewById(R.id.sendBroadCast);
b1.setOnClickListener(listener);
}
privateOnClickListener listener =newOnClickListener() {
@Override
publicvoidonClick(View view) {
switch(view.getId()) {
caseR.id.sendBroadCast:
Intent intent =newIntent("forBroadcast");
intent.putExtra("name","this is broadcast test!");
sendBroadcast(intent);//发送广播
break;
default:
break;
}
}
};
}
publicclassMyReceiverextendsBroadcastReceiver {
@Override
publicvoidonReceive(Context context, Intent intent) {
Log.i("receiver",intent.getStringExtra("name"));
}
}
在Manifest中注册广播接收器
也可以使用代码的方式来注册一个广播接收器
一般我们是在Activity.onResume()中方法中使用Context.registReceiver()注册一个广播接收器,在onPause()中使���unRegisterReceiver()来销毁一个广播接收器。
2、系统广播事件的使用
除了上面我们自定义的广播事件,Android系统还提供了很多标准的广播Action。这些广播是系统自动发出的,我们直接定义事件接受器进行接受就可以使用这些系统消息了。
publicclassSystemBootReceiverextendsBroadcastReceiver {
@Override
publicvoidonReceive(Context arg0, Intent arg1) {
Log.i("service","系统启动成功!");
}
}
3、Notification与NotificationManager的使用
publicclassMainActivityextendsActivity {
privateButton b1,b2;
privateNotification mNotification;
privateNotificationManager mNotificationManager;
privatestaticfinalintID =100;//通知的ID
@Override
publicvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.notification_demo);
b1 = (Button)findViewById(R.id.sendBtn);
b2 = (Button)findViewById(R.id.cancleBtn);
b1.setOnClickListener(listener);
b2.setOnClickListener(listener);
//获取系统通知管理器实例
mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
//实例化自己的通知实例
mNotification =newNotification();
//显示图标
mNotification.icon = R.drawable.icon;
//显示事件
mNotification.when = System.currentTimeMillis();
//显示提示信息,该信息也会在状态栏中滚动显示
mNotification.tickerText ="您有一条通知...";
}
privateOnClickListener listener =newOnClickListener() {
@Override
publicvoidonClick(View view) {
switch(view.getId()) {
caseR.id.sendBtn:
//设置通知的点击事件(此处为跳转到ResultActivity)
Intent intent =newIntent();
intent.setClass(MainActivity.this, ResultActivity.class);
//使用PendingIntent包装Intent
PendingIntent pi = PendingIntent.getActivity(MainActivity.this,0, intent,0);
//设置事件
mNotification.setLatestEventInfo(MainActivity.this,"通知标题...","通知内容...", pi);
//发送通知
mNotificationManager.notify(ID, mNotification);
break;
caseR.id.cancleBtn:
//取消某ID的通知
mNotificationManager.cancel(ID);
break;
default:
break;
}
}
};
}