linux 广播原理,BroadcastReceiver广播事件处理以及与Notification的配合使用详解

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;

}

}

};

}0b1331709591d260c1c78e86d0c51c18.png

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值