Android广播机制初识

Android中的每个应用程序都可以对感兴趣的广播进行注册,这样程序就会只接收到自己关心的广播(来自系统或是其他应用程序)。同时Android允许应用程序自由发送和接收广播。总的来说,Android通过Intent发送广播,通过Broadcast Receiver接收广播。

接收系统广播

接收广播需要接收器对相应广播进行注册,在代码中动态注册或是在AndroidManifest文件内静态注册。
动态注册步骤:
创建一个MyReceiver类 继承自BroadcastReceiver 并重写onReceive方法(接收到广播后将被调用),后在正确的位置(如onCreate方法中)对创建的MyReceiver实例用registerReceiver方法注册,例registerReceiver(myReceiver, intentFilter);intentFilter是IntentFilter的一个实例,在注册前需要向intentFilter中用 addAction方法加入相应的广播 ;动态注册的接收器后必须要在 取消注册 (在onDestory方法内调用UNregisterReceive方法)
代码实例:

public class MainActivity extends AppCompatActivity {

  private IntentFilter intentFilter;  private MyReceiver myReceiver;  ...onCreate(Bundle savedInstanceState) {      ...      intentFilter = new IntentFilter();      intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");      myReceiver = new MyReceiver();      registerReceiver(myReceiver, intentFilter);  }  ...onDestroy() {      ...      unregisterReceiver(myReceiver);  }  class MyReceiver extends BroadcastReceiver {      ...onReceive(Context context, Intent intent) {          Toast.makeText(context, "Network change detected.", Toast.LENGTH_SHORT).show();      }  }

}

上述代码实例需要在AndroidManifest文件中声明网络访问权限后才可正确执行。

静态注册步骤:
在AndroidManifest对应的Receiver广播接收器receiver标签内的intent-filter标签下添加action标签并将name属性设置为希望接受的广播, 例如:

<receiver  android:name=".MyReceiver" android:enabled="true" android:exported="true">  <intent-filter>      <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>  intent-filter>receiver>

更多相关文章

  1. Android设置item的行间距,以及去掉分割线方法
  2. Android中的Shape和Selector的结合使用实例
  3. Android中设置动画循环旋转的方法
  4. 向模拟器发短信打电话的方法
  5. android手机屏幕适配方法

随机推荐

  1. 第1章 老司机 要飙车 抓紧 开启你的Andro
  2. 自己DIY osc android 客户端
  3. android:gravity / android:layout_Gravi
  4. Android(安卓)Compatibility package 兼
  5. Android(安卓)文件夹简单介绍
  6. android项目案例3- 基于Android(安卓)stu
  7. 引用 Android内核和驱动篇-Android内核介
  8. android NDK
  9. android系统定制从听说到入门六-从红灯区
  10. ch017 Android(安卓)样式与主题