zoukankan      html  css  js  c++  java
  • 使用广播来进行刷新页面

    这几天无所事事,就又来这写写,今天我想分享一下这个广播来刷新页面。首先我先说一下这个广播的机制:

    广播被分为两种不同的类型:“普通广播(Normal broadcasts)”和“有序广播(Ordered broadcasts)”。普通广播是完全异步的,可以在同一时刻(逻辑上)被所有接收者接收到,消息传递的效率比较高,但缺点是:接收者不能将处理结果传递给下一个接收者,并且无法终止广播Intent的传播;然而有序广播是按照接收者声明的优先级别(声明在intent-filter元素的android:priority属性中,数越大优先级别越高,取值范围:-1000到1000。也可以调用IntentFilter对象的setPriority()进行设置),被接收者依次接收广播。如:A的级别高于B,B的级别高于C,那么,广播先传给A,再传给B,最后传给C。A得到广播后,可以往广播里存入数据,当广播传给B时,B可以从广播中得到A存入的数据。

    Context.sendBroadcast()   发送的是普通广播,所有订阅者都有机会获得并进行处理。

    Context.sendOrderedBroadcast()  发送的是有序广播

    系统会根据接收者声明的优先级别按顺序逐个执行接收者,前面的接收者有权终止广播(BroadcastReceiver.abortBroadcast()),如果广播被前面的接收者终止,后面的接收者就再也无法获取到广播。对于有序广播,前面的接收者可以将处理结果通过setResultExtras(Bundle)方法存放进结果对象,然后传给下一个接收者,通过代码:Bundle bundle =getResultExtras(true))可以获取上一个接收者存入在结果对象中的数据。

    系统收到短信,发出的广播属于有序广播。如果想阻止用户收到短信,可以通过设置优先级,让你们自定义的接收者先获取到广播,然后终止广播,这样用户就接收不到短信了。

    我们知道,广播的注册方式有两种,一种是静态注册,一种是动态注册。不清楚的可以去详细的看看。静态注册时在配置文件中注册,动态注册是在java文件中注册,下面一个例子是使用动态注册一个demo,

    首先注册广播:

    /**
    * 注册广播
    */
    public void register() {

    MBroadcastReceiver receiver = new MBroadcastReceiver();
        IntentFilter filter = new IntentFilter(ACTION);

    activity.registerReceiver(receiver, filter);
    }

    ACTION指的是自己设置的一个标示

    /**
    * 定义广播
    */
    class MBroadcastReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
    //这里可以做你想要的操作,比如刷新数据什么的
    }
    }
    我这里是以一个内部类的形势定义。

    还有一个大家比较容易遗漏的就是当activity销毁的时候需要解绑这个广播。
    activity.unregisterReceiver(receiver);

    一切准备就绪,可以发送广播了。
    Intent intent = new Intent(ACTION);
    activity.sendBroadcast(intent);

    好了,完工。














  • 相关阅读:
    Python 存储引擎 数据类型 主键
    Python 数据库
    Python 线程池进程池 异步回调 协程 IO模型
    Python GIL锁 死锁 递归锁 event事件 信号量
    Python 进程间通信 线程
    Python 计算机发展史 多道技术 进程 守护进程 孤儿和僵尸进程 互斥锁
    Python 异常及处理 文件上传事例 UDP socketserver模块
    Python socket 粘包问题 报头
    Django基础,Day7
    Django基础,Day6
  • 原文地址:https://www.cnblogs.com/huangjialin/p/6038630.html
Copyright © 2011-2022 走看看