第六课-详解广播.pptxVIP

  • 6
  • 0
  • 约7.66千字
  • 约 40页
  • 2018-06-10 发布于上海
  • 举报
详解广播 BroadcastReceiver(广播接收者)是Android四大组件之一,广播接收者简单地说就是接收广播意图的Java类。BroadcastReceiver是用于接收广播的组件用于组件与组件之间进行通信,可以跨应用程序传递.如操作系统电池电量低会发送一个广播,这样我们的程序里面可以去监听这个广播,可以关 闭程序里面比较耗电的功能,提示用户注意保存进度什么的,还如其它安装新应用等,还有普通应 用程序,例如启动特定线程,文件下载完毕等。 Activity,Service,Content provider都要在AndroidManifest中静态注册,但是只有BroadcastReceiver可以使用Java代码的方法来动态注册。Android中的广播机制设计的非常出色,很多事情原本需要开发者亲自操作的,现在只需等待广播告知自己就可以了,大大减少了开发的工作量和开发周期。 广播的发送的一般应用场合:发送频率低的情况可以使用,数据量小的情况可以使用 要创建自己的BroadcastReceiver对象,我们需要继承BroadcastReceiver类,并实现其onReceive 方法。 在onReceive方法内,我们可以获取随广播而来的Intent中的数据public class myBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //intent里面包含着广播的信息,可以通过信息的key把信息取出来,也可以在这里使用toast提示信息 }}创建BroadcastReceiver注册BroadcastReceiver静态注册:静态注册是在AndroidManifest.xml文件中配置的动态注册: 动态注册需要在代码中动态的指定广播地址并注册创建自定义的BroadcastReceiver类public class StaticRegisterBroadcastReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { //intent里面包含着广播的信息,可以通过信息的key把信息取出来 Toast.makeText(context,手机开机,Toast.LENGTH_LONG).show(); }}在AndroidManifest.xml中添加uses-permission android:name=android.permission.RECEIVE_BOOT_COMPLETED/ //监测系统开机广播需要声明的权限receiver android:name=.myBroadcastReceiver//广播接收器的类名 intent-filter action android:name=android.intent.action.BOOT_COMPLETED/action//根据实际的情况填写action,接受不同的广播,这里的action对应开机广播 /intent-filter /receiver声明BroadcastReceiver使用静态注册的广播接受者监测开机动态注册BroadcastReceiver创建一个Java类叫DynamicRegisterBroadcastReceiver,继承BroadcastReceiver(这里是为了程序可读性设定的类名,实际开发中可以根据实际情况决定类名)在类中实现onReceive()方法,并在方法中加入希望在收到广播后执行的代码在Activity中添加该广播接受者所接受的广播类型,并为DynamicRegisterBroadcastReceiver注册重写广播接受者所在Activity的onDestroy()方法自定义DynamicRegisterBroadcastReceiver类并继承BroadcastReceiver类在类中实现onReceive()方法,并在方法中加入收到广播后执行的代码在上面的代码中,我们通过onReceive()方法中传入的context参数调用了getSystemService()方法得到了ConnectivityManager的实例,这是一个系统服务类,专门用于管理网络连接的。然后调用ConnectivityManager实例的getActiveNetworkInfo()方法可以得到NetworkInfo类的实例,再调用NetworkInfo类实例的isAvailable()方法就可以判断出当前是否有网络了在Activ

文档评论(0)

1亿VIP精品文档

相关文档