Broadcast Receiver广播接收器,和事件处理机制类似,只不过事件处理机制是程序级的,广播事件处理机制是系统级的。
我们可以通过sendBroadcast()方法来发起一个系统级的事件广播来传递消息,我们可以在应用程序中实现Broadcast Receiver来监听和响应这些广播的Intent.。
事件广播:构建Intent对象,调用sendBroadcast方法来将广播发出去。事件的接收是通过定义一个继承Broadcast Receiver的类来实现的。继承该类后覆盖其onreceive()f方法,在该方法中响应事件。
Android系统中定义了很多标准的Broadcast Receiver来响应系统的广播事件。例如:ACTION_TIME_CHANGED时间改变时触发, ACTION_BOOT_COMPLETED系统启动完成后触发,ACTION_PACKAGE_ADDED添加包的时候触发,ACTION_BATTERY_CHANGED电量低时触发。
自定义Broadcast Receiver
自定义Broadcast Receiver首先在程序组件里构建要广播的intent,使用sendBroadcast方法发送出去,其次定义一个广播接收器,该广播接收器继承Broadcast Receiver,并且覆盖了onreceive方法来响应事件,最后注册该广播接收器。
Broadcast Receiver组件没有提供可视化界面用来显示广播信息,,我们可以使用Notification和notificationManager来实现可是话信息的显示,通过他们我们可以显示广播信息的内容,图标以及震动等消息。
使用Notification和notificationManager,一般获取系统级的服务notificationManager,然后实例化Notification,设置其属相,通过notificationManager发出通知。
获取系统级的服务notificationManager通过调用Context的getSystemService方法实现。如:
String service = NOTIFICATION_SERVICE;
notificationManager nm = (notificationManager )getSystemService(service);
alarmManager提供了一种系统级的提示服务,允许你安排在将来的某个时间执行一个服务,alarmManager对象一般不直接实例化,而是通过Context.getSystemService(Context.ALARM_SERVICE)方法获得。