zoukankan      html  css  js  c++  java
  • Android BroadcastReceiver

    1. Broadcast Receiver:接听用户程序或系统程序所发出的broadcast intent,属于系统级别的监听器,拥有自己的进程,可以使用sendBroadcast()方法来发起一个系统级别的事件广播来传递消息,在应用程序中实现Broadcast Receiver来监听和响应这些广播的Intent。匹配Intent的BroadcastReceiver都可能被启动

    2. 事件广播要构建Intent然后调用sendBroadcast()方法将广播发出,事件的接收是通过定义一个继承BroadcastReceiver的类来实现的,继承该类后覆盖起onReceiver(Context,Intent)方法,在该方法中响应事件,如果该方法10秒内没有完成,系统会认为程序无响应,该方法执行完BroadcastReceiver实例就会被销毁Android系统中定义了很多标准的Broadcast Action来响应系统广播事件

    3. 广播接收器既可以在AndroidManifest中注册也可以通过代码方式来注册,一般我们是在Activity.onResume()方法中使用Context.registerReceiver(BroadcastReceiver,IntentFilter)方法来注册一个广播接收器(IntentFilter.setPriority可以设置receiver的优先级),在Activity.onPause中使用unregisterReceiver方法来注销一个广播接收器

    4. 两种注册广播方式的区别:
      • 动态注册的广播永远要快于静态注册的广播,不管静态注册的优先级设置的多高,不管动态注册的优先级有多低
      • 动态注册广播不是常驻型广播,也就是说广播跟随activity的生命周期。注意: 在activity结束前,移除广播接收器。
      • 静态注册是常驻型,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。

    5. 由于BroadcastReceiver是一种全局监听器,因此可以利用来进行不同组件的通信,通过在组件中定义内部BroadcastReceiver类,接收其他组件的广播信息

    6. 发送广播:Context.sendBroadcast(Intent)会启动Intent参数对应的BroadcastReceiver Notification和NotificationManager用来实现可视化的信息显示

    7. Broadcast被分为两种:
      • 普通广播:完全异步,可以再同一时刻(逻辑上)被所有接受者收到,传递效率高,但是接受者不能把处理结果返回给下一个接受者,而且无法终止Broadcast intent的传播。sendBoardcast()发送普通广播
      • 有序广播:接收者将按照预先声明的优先级依次调用onReceiver()方法接收Broadcast,优先级声明在<intent-filter>元素的android:priority属性中或者调用IntentFilter.setPriority进行设置,数值越大优先级越高,有序广播可以调用abortBroadcast()终止intent的传播,也可以把自己的数据通过setResultExtras(Bundle)方法传给下一个接受者,sendOrderedBroadcast()发送有序广播

    8. AlarmManager:用来实现闹钟,提供了一种系统级的提示服务,允许安排在将来的某个时间执行一个服务

    9. AlarmManager am=(AlarmManager)getSystemService(ALARM_SERVICE);
    10.  
     
     
  • 相关阅读:
    LINUX 蓝牙耳机的配置方法
    Android_0.9 蓝牙栈bluez使用方法
    G1 安装 Linux Debian system
    Linux下基于Bluez4.x的蓝牙耳机配置
    【转】ARM平台上蓝牙协议栈Bluez的移植使用和配置
    Debian下编译安装驱动模块
    nginx多虚拟主机配置 Leone
    nginx以unixdomainsocket方式连接fastcgi(php) Leone
    Nginx多站点虚拟主机实现单独启动停止phpfpm、单独控制权限设置 Leone
    开启Apache2.2的deflate和expires模块来提升网页浏览速度 Leone
  • 原文地址:https://www.cnblogs.com/phenixyu/p/3969151.html
Copyright © 2011-2022 走看看