为了便于进行系统级别的消息通知,Android引入了一套类似现实生活中广播的消息机制。

Android 中的每个应用程序都可以对自己感兴趣的广播进行注册,这样程序就只会接收到自己感兴趣的广播内容,这些广播可能来自于系统,来自于其他应用程序。

Android中的广播主要分成两种:标准广播和有序广播。

标准广播是一种完全异步执行的广播,在广播发出之后,所有广播接收器都会在同一时刻接收到这条广播消息。

有序广播是同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器能够接收到这条广播消息。

接收广播系统------广播接收器

注册广播的方式有两种,在代码中注册被叫做动态注册。而在AndroidMainfest.xml中注册则被叫做静态注册。

如何创建一个广播接收器? 我们只需要新建一个类,并且让它继承BroadcastReceiver, 然后重写父类的onReceive()方法。这样当有广播来时,onReceive()方法就会得到执行,我们可以在这个方法里面添加具体的逻辑。

下面我们通过一个例子来了解一下广播接收器的基本用法。



public class MainActivity extends AppCompatActivity {    private IntentFilter intentFilter;    private NetworkChangeReceiver networkChangeReceiver;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        intentFilter =new IntentFilter();        intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");        networkChangeReceiver=new NetworkChangeReceiver();        registerReceiver(networkChangeReceiver,intentFilter);    }    @Override    protected void onDestroy(){        super.onDestroy();       unregisterReceiver(networkChangeReceiver);    }      class NetworkChangeReceiver extends BroadcastReceiver{        @Override        public void onReceive(Context context, Intent intent){            Toast.makeText(context,"network changes",Toast.LENGTH_SHORT).show();        }    }}

首先,我们在MainActivity中定义了一个内部类,让它继承BroadcastReceiver,并且重写了父类的onReceiver()方法。

接着,我们新建一个IntentFilter的实例,并且给它添加了一个值为android.net.conn.CONNECTIVITY_CHANGEaction.

接着我们又实例了一个NetworkChangeReceiver对象

调用registerReceiver()方法进行注册,将NetworhChangeReceiver的实例和IntentFilter的实例传进去。这样就实现了监听网络变化的功能。

注意,动态注册的广播接收器一定都要取消注册,我们在onDestroy()方法中通过调用unregisterReceiver()方法来实现。



更多相关文章

  1. android中两个app之间广播,并且在接收者中对话框显示
  2. Android(安卓)短信广播接收相关问题
  3. 阅读郭林《第一行代码》的笔记——第5章 全局大喇叭,详解广播机制
  4. 「「第一行代码(第二版)」」学习笔记 6 广播机制(连载中)
  5. 关于APP接收开机广播延迟问题,解决开机启动慢问题
  6. Android(安卓)四大组件之Broadcast【一】
  7. Android(安卓)基于Aidl的跨进程间双向通信管理中心(类似于聊天室)
  8. Android的广播Receiver动态注册和静态注册
  9. Android(安卓)C2DM学习——云端推送

随机推荐

  1. Android驾驶证拍照识别技术
  2. android怎么阻止横竖屏切换
  3. 读万卷书不如行万里路,行万里路不如阅人无
  4. unable to resolve dependency for app@
  5. [置顶] 如何在Android模拟器上运行Adobe
  6. Android下QQ空间查看大图特效
  7. CyanogenMod 7 再把 Touchpad 的改造標竿
  8. Android UI 的更新及其线程模型
  9. Android 缓存 - LruCache
  10. Android——SQLite数据库使用详解