博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基础篇:4.熟练掌握BroadcastReceiver的接收和使用
阅读量:5021 次
发布时间:2019-06-12

本文共 1806 字,大约阅读时间需要 6 分钟。

1.广播

  既然要谈论到广播接收器,那必然先要来谈谈广播,毕竟两者相辅相成。在Android系统中有各种各样的广播如常见的:电池的使用状态、电话的接听、短信的接收等。应用开发者也可以在程序中发送出各种广播。那么广播到底是个什么东西?!---广播是一种广泛运用在应用程序之间传输信息的机制。广播的发送可以通过以下两种方式发送:

  (1)Context.sendBroadcast---广播无序事件,理论上,所有的接收者同时接收到广播。

   (2)Context.sendOrderedBroadcast---广播有序时间,接收者按照指定顺序接收,这样一来,每个接收者接收到的信息就有可能不同,优先级别低的接收者甚至有可能接收不到广播(如果前面的接收者终止了该广播)。

  Android的广播机制设计得很出色,原本很多需要开发者亲自监控操作的事情,现在都只需监听广播并作出相应操作即可,同时android提供了一个开发利器用于监听各种广播---BroadcastReceiver。

2.广播接收者

  广播接收者用于异步接收广播的Intent,BroadcastReceiver没有可视化的用户界面,但接收到广播后可以通过开启一个activity或者NotificationManager来通知用户。想让BroadcastReceiver能按用户的意图正常运行,需要进行两步操作:

  (1)创建自己的BroadcastReceiver类,该类继承自android.content.BroadcastReceiver,并实现其onReceive方法。

public class MyReceiver extends BroadcastReceiver {            private static final String TAG = "MyReceiver";            @Override      public void onReceive(Context context, Intent intent) {          String msg = intent.getStringExtra("msg");          Log.i(TAG, msg);      }    }

  用户可以在onReceive中实现自己的操作,如打开activity、NotificationManager等。  

  (2)注册一个指定的广播地址

    a)静态注册:静态注册是指在AndroidManifest.xml进行相应的配置:

  其中action android:name...指定了该广播接收器可以接收这个指定地址的广播,换一个说法就是在广播接收器中注册了该地址的广播。

  b)动态注册:在代码中动态指定广播地址并进行注册:

MyReceiver receiver = new MyReceiver();            IntentFilter filter = new IntentFilter();  filter.addAction("android.intent.action.MY_BROADCAST");          registerReceiver(receiver, filter);

  动态注册的接收器,在程序被销毁前必须进行接触注册操作,否则系统将出现异常,解除注册的操作很简单:

protected void onDestroy() {      super.onDestroy();      unregisterReceiver(receiver);  }

静态注册和动态注册的最大区别就在于静态注册的广播接收器为长驻型,即程序被关闭后,如果有广播信息的传来,广播接收器也会被系统自动调用运行。

关于BroadcastReceiver和广播,还有更深一层的知识,待日后有更多接触以及更深一步的理解时再回头进行补充。

转载于:https://www.cnblogs.com/dream550/p/3883783.html

你可能感兴趣的文章
OFFICE安装提示1935错误
查看>>
jva基础网络编程
查看>>
js 正计时和倒计时
查看>>
复合数据类型,英文词频统计
查看>>
you-get帮助使用手册
查看>>
nyoj756_重建二叉树_先序遍历
查看>>
sin()函数的实现
查看>>
图像切割之(一)概述
查看>>
JAVA修饰符类型(public,protected,private,friendly)
查看>>
flex利用webservice上传照片
查看>>
IOS开发之Bug--使用KVC的易错情况
查看>>
python list和tuple
查看>>
基础薄弱的反思
查看>>
ORACLE增删改查以及case when的基本用法
查看>>
[转]oracle10客户端PL/SQL Developer如何连接远程服务器上的oracle数据库
查看>>
HTML5 表单元素和属性
查看>>
SDUTOJ 2498 数据结构实验之图论十一:AOE网上的关键路径
查看>>
使用SpringSocial开发QQ登录
查看>>
好玩的游戏
查看>>
2.6. Statistical Models, Supervised Learning and Function Approximation
查看>>