Android之广播

我自横刀向天笑,去留肝胆两昆仑。这篇文章主要讲述Android之广播相关的知识,希望能为你提供帮助。
(以下内容是阅读郭霖大神的《第一行代码》后自己总结的)
1、概述
广播是android的四大组件之一。
【Android之广播】Android的广播机制十分灵活。

Android之广播

文章图片

 
2、发送广播
如上图Android的广播主要分为两类:标准广播和有序广播。
所有的广播接收器都可以接收到标准广播,而且他们的接收几乎是在同一时刻。这意味着标准广播的效率很高,但无法被截断。
在接收有序广播时,广播接收器是由先后顺序的,优先级高的接收器先接收到广播,并且有权对该广播截断,不让后续接收器接收到。
发送标准广播和有序广播的方式非常简单。
//发送标准广播 sendBroadcast.setOnClickListener(new View.onClickListener(){@Override public void onClick(View v){ Intent intent = new Intent("com.example.broadcastTest.MY_BROADCAST"); sendBroadcast(intent); } });

//发送有序广播 sendBroadcast.setOnClickListener(new View.onClickListener(){@Override public void onClick(View v){ Intent intent = new Intent("com.example.broadcastTest.MY_BROADCAST"); sendOrderedBroadcast(intent,null); } });

下图是Android API中对sendBroadcast()和sendOrderedBroadcast()的注解。
Android之广播

文章图片

3、接收广播
当然,发送广播后没有接收器也是白搭。
3.1 创建接收器
创建广播接收器很简单,只需要新建一个类,让它继承BroadcastReceiver,并重写父类中的onReceive()方法就可以了。
//创建一个广播接收器 public class NetworkChangeReceiver extends BroadcastReceiver{@Override public void onReceive(Context context,Intent intent){ Toast.makeText(context,"Network change !", Toast.LENGTH_SHORT).show(); }}

3.2 注册广播接收器
当然,只创建广播接收器是没有用的。广播接收器还需要注册,表示它能够接收到哪种广播。
接收器的注册分为动态注册和静态注册。
动态注册则是在代码中完成注册。静态注册是在AndroidManifest.xml中注册。
3.2.1 动态注册
动态注册的广播需要程序启动才能开始接收广播。
@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); }

下面是registerReceiver()和unregisterReceiver()在Android API中的说明。
Android之广播

文章图片

Android之广播

文章图片

3.2.2 静态注册
静态注册则不需要程序启动,手机开启就能接收到广播。静态注册则是在AndroidManifest.xml中申明。
< receiver android:name=".NetworkChangeReceiver" > < intent-filter> < action android:name="android.net.conn.CONNECTIVITY_ CHANGE" /> < /intent-filter> < /receiver>

 
4 总结
总结而言,运用Android的广播机制,我们需要做到以下几点
如果监听自定义广播,
1、使用sendBroadcast()或sendOrderedBroadcast()方法,发送定义的广播
2、创建广播接收器,继承自BroadcastReceiver(),并重写onReceive()方法。在onReceive()方法中实现接收到广播后的响应动作。
3、注册广播接收器,让广播接收器能接收到广播。广播接收器可以动态注册或者静态注册。动态注册需要取消注册。
如果是监听系统广播,上面三步我们只需要做后面两步就Ok了。
 

    推荐阅读