Broadcast Receiver跟事件处理机制差不多,只不过事件是通过点击之类的来实现,而Broadcast Receiver 是通过系统级别的。
构建Intent对象,调用sendBroadcast()方法将广播发出。事件的接收是通过定义一个继承BroadcastReceiver的类来实现的,继承该类后覆盖onReceive方法。
时间改变时触发ANCTION_TIME_CHANGED、系统启动后触发ACTION_BOOT_COMPLETED、添加包时触发ACTION_PACKAGE_ADDED、电量低时触发ACTION_BATTERY_CHANGED
接收系统发出的广播,我们不需要自己再定义发出的广播的Intent,只需定义接收器就可以了。
Context.registerReceiver()注册广播
unregistereReceiver(r)销毁广播
—————————————————————————————————————————————————————————————————————————————
可视化界面显示广播:Notification和NotificationManager
首先获得系统级的服务NotificationManager,然后实例化Notification,设置其属性,通过NotificationManager发出通知就可以了。
1、获取系统服务
NotificationManager nm = getSystemService(service)
2、实例化Notification,设置属性
Notification n = new Notification()
int icon = n.icon = R.drawable.icon;
n.icon = icon;
n.tickerText = "Test notification~~";
n.when = System.getCurrentTimeMills();
//当然也可以通过构造方法设置
Notification n2 = new Notification(icon,tickerText,when);
3、设置setLatestEventInfo()方法在视图中设置图标和时间。
Intent intent = new Intent(MainActivity.this,MainActivity.class);
PendingIntent pi = PendingIntent.getActivity(MainActivity.this,0,intent,0);//获得PendingIntent
n.setLatestEventInfo(MainActivity.this,"MY title","My content",pi);//设置事件信息
4、发出通知
int ID = 1;
nm.notify(ID,n);