Android开发笔记之《广播事件处理学习》

来源:互联网 发布:编程ls是什么意思 编辑:程序博客网 时间:2024/05/28 09:33

Broadcast Receiver和其他时间处理机制类似,只不过事件处理机制是程序组件级别的,广播事件处理机制是系统级别的。

我们通过Intent来启动一个广播事件。

通过sendBroadcast()方法发送广播消息,通过继承BroadcastReceiver类,重载onReceive()方法来响应事件。

Android中定义了很多标准的Broadcast Action来响应系统广播事件,我们也可以自己定义广播事件。

以下是标准的系统广播事件:

常量名称常量值   意义ACTION_BOOT_COMPLETEDandroid.intent.action.BOOT_COMPLETED系统启动完成ACTION_TIME_CHANGEDandroid.intent.action.ACTION_TIME_CHANGED事件改变ACTION_DATE_CHANGEDandroid.intent.action.ACTION_DATE_CHANGED日期改变ACTION_TIMEZONE_CHANGEDandroid.intent.action.ACTION_TIMEZONE_CHANGED时区改变ACTION_BATTERY_LOWandroid.intent.action.ACTION_BATTERY_LOW电量低ACTION_MEDIA_EJECTandroid.intent.action.ACTION_MEDIA_EJECT插入或拔出外部媒体ACTION_MEDIA_BUTTONandroid.intent.action.ACTION_MEDIA_BUTTON按下媒体按钮ACTION_PACKAGE_ADDEDandroid.intent.action.ACTION_PACKAGE_ADDED添加包ACTION_PACKAGE_REMOVEDandroid.intent.action.ACTION_PACKAGE_REMOVED删除包

Broadcast Receiver组件并没有提供可视化界面来显示广播信息

Android提供了Notification和NotificationManager来实现可视化的信息显示

通过使用他们,我们可以显示广播信息的内容、图标以及振动等信息


首先我们来说一下如何创建和接收广播,和Activity,Service一样,需要借助intent,调用sendBroadcast()来发送广播

另外,要写一个类继承BroadcastReceiver类,并重写onReceive()方法。

注意:onReceive()方法最多只能处理几秒钟的东西,如果要处理较长时间的操作(文件上传、下载等),就要用其他方法了

创建广播:

private OnClickListener listener = new OnClickListener(){private String SEND = "SEND_BROADCAST";@Overridepublic void onClick(View v){Intent intent = new Intent();   //创建intentintent.setAction(SEND);    //设置ACTION,ACTION在AndroidManifest.xml中设置sendBroadcast(intent);    //发送广播}};
广播接收处理:

private static final String TAG = "FirstBroadcast";@Overridepublic void onReceive(Context context, Intent intent)   //继承BroadcastReceiver重写的onReceive方法{Log.i(TAG, "Broadcast Receive");}
上面的是静态绑定注册广播处理方法,也就是在AndroidManifest.xml中定义好ACTION,在代码中setAction,那么启动软件的时候就自动绑定注册了

还有动态绑定方法,调用registerReceiver方法启动绑定注册,调用unregisterReceiver()解除绑定注册

绑定广播演示代码:

SecondBroadcast sbBroadcast = new SecondBroadcast();      //要新建一个BroadcastReceiver类或子类对象用于绑定IntentFilter filter = new IntentFilter(); //注意这里用的是IntentFilterfilter.addAction(FIRST); //为绑定添加ACTIONregisterReceiver(sbBroadcast, filter); //执行绑定注册广播

unregisterReceiver(sbBroadcast);    //执行完代码后解除绑定注册,主要操作对象同一性

绑定和解除绑定时候注意操作的要是同一个对象,而且绑定注册方式不用在AndroidManifest.xml中声明






原创粉丝点击