暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

每日一学之Android中的广播

程序员的日记本 2017-12-04
317


图片来自于百度图片


广播的特点


  • 广播总有播放者,和收听者,可以是一对一,可以是一对多

  • 播放者总是被规定在一个频率发送广播内容,接收者通过这个相同的频率接收广播。


Adnroid中的广播



广播类型


  • 普通广播:普通广播是完全异步的,可以在同一时刻(逻辑上)被所有广播接收者接收到,消息传递的效率比较高,但缺点是:接收者不能将处理结果传递给下一个接收者,并且无法终止广播Intent的传播


  • 有序广播:按照接收者声明的优先级别(声明在intent-filter元素的android:priority属性中,数越大优先级别越高,取值范围:-1000到1000。也可以调用IntentFilter对象的setPriority()进行设置),被接收者依次接收广播。如:A的级别高于B,B的级别高于C,那么,广播先传给A,再传给B,最后传给C。A得到广播后,可以往广播里存入数据,当广播传给B时,B可以从广播中得到A存入的数据。


注册方式


  • 静态注册:即使你的应用程序关闭了,如果有广播信息来,你写的广播接收器同样的能接受到,他的注册方式就是在你的应用程序中的AndroidManifast.xml进行订阅的


  • 动态注册:当应用程序结束了,广播自然就没有了,比如你在activity中的onCreate或者onResume中订阅广播,同时你必须在onDestory或者onPause中取消广播订阅。不然会报异常,这样你的广播接收器就一个非常驻型的了


需要注意的是,动态注册需要使用隐式intent方式,所以广播也要使用隐式的intent发送数据;静态注册显式和隐式都支持,因此我们通常都使用采用隐式intent发送数据。


代码示例


静态注册


  • 在Manifest中注册广播订阅者

<receiver android:name=".StaticReciver">    
<intent-filter>        <action android:name="com.myboradcast.test"></action>    </intent-filter>
</receiver>

  • 继承BroadcastReceiver

public class StaticReciver extends BroadcastReceiver {    
   String
TAG = "myboradcast";    @Override    public void onReceive(Context context, Intent intent) {        Log.i(TAG , "静态注册收到的action : " + intent.getAction());    } }

  •  Activity中点击按钮发送广播

public void sendboradcast(View view){
    Intent it = new Intent();
    it.setAction("com.myboradcast.test");
    sendBroadcast(it);
}


动态注册


  • 在Activity中注册广播订阅者

@Override protected void onResume() {    super.onResume();    //注册接收广播    IntentFilter counterActionFilter =
           new
IntentFilter("com.myboradcast.test");    receiver = new TrendsReciver();    registerReceiver(receiver, counterActionFilter); } @Override protected void onPause() {    super.onPause();    unregisterReceiver(receiver); }

  • 使用静态注册方式中的发送广播按钮发送广播


运行结果



下期提要

下期主要说一说Android的通知机制,当学习完通知机制,就可以模拟实现微信新信息到达的通知了。

敬请期待!





长按,识别二维码,加关注,

可了解更多编程方面的知识,

让你看到每天一点点的进步。

谢谢点赞 + 分享!!!!!!



不积跬步,无以至千里;

不积小流,无以成江海。


文章转载自程序员的日记本,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论