广播机制 静态注册

来源:互联网 发布:中国图书馆cip数据查询 编辑:程序博客网 时间:2024/04/30 10:25
  1. 动态注册的广播接收器可以自由的控制注册与注销,在灵活方面有很大的优势,但是,它也存在着一个缺点,就是必须要在程序启动后才能够接收到广播,因为注册的逻辑是写在onCreate()里的。那么,有什么方法可以让程序在未启动的情况下就能接收到广播那?这就需要静态注册
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.xiaoxu.administrator.myapplication3"><uses-permission  android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>    <application        android:allowBackup="true"        android:icon="@mipmap/ic_launcher"        android:label="@string/app_name"        android:supportsRtl="true"        android:theme="@style/AppTheme">        <activity            android:name=".MainActivity"            android:theme="@style/AppTheme2">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <receiver android:name=".Broadcast.MyBroadcast1">            <intent-filter>                  <action android:name="android.intent.action.BOOT_COMPLETED"/>                      </intent-filter>        </receiver>    </application></manifest>
  • < application>标签中,设置了一个新的标签< receiver>,所有的静态广播的注册都是在这里进行注册的。它的用法和activity的注册类似,也是通过指定android:name来指定具体注册哪一个广播接收器,然后在 < intent-filter>中加入我们想要接收的广播就行了。同样,监听系统开机广播也要声明权限,
  • android.permission.RECEIVE_BOOT_COMPLETED
  • 这样在再次开机后,MyBroadcast1就会接收到这条开机广播,并处理相应的事情。
  • 需要注意的是:在广播接收器的onReceiver()方法中,不要添加过多的逻辑或者任何耗时的操作,因为在广播接收器中是不允许开启线程的,当onReceive()方法运行了较长的时间而没有结束的时候,程序就会报错。因此,广播接收器通常扮演者打开程序其他组件的角色,比如创建一个状态栏通知,或者启动一个服务等。
0 0
原创粉丝点击