Android学习笔记-广播的使用(一)

来源:互联网 发布:淘宝上买电影票能用吗 编辑:程序博客网 时间:2024/06/08 08:07

Android中的每个应用都可以对自己感兴趣的广播进行注册,这样该程序就能收到自己所关心的广播内容。

安卓中的广播分两种, 标准广播(Normal broadcast)和有序广播(Ordered broadcast)

标准广播是完全异步执行的,广播发出后,所有的接收器同时收到

有序广播是同步执行的,广播发出后,同一时刻只会有一个接收器能接到这条广播,当这个接收器的逻辑执行完毕后,广播才会继续传递。


实例1:当网络状态发生改变时,使用Toast提示信息

public class MainActivity extends Activity {private IntentFilter intentFilter;private NetworkChangeReceiver networkChangeReceiver;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        intentFilter=new IntentFilter();        networkChangeReceiver = new NetworkChangeReceiver();        intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");        registerReceiver(networkChangeReceiver, intentFilter);    }    @Override    protected void onDestroy() {    // TODO Auto-generated method stub    super.onDestroy();        unregisterReceiver(networkChangeReceiver);    }class NetworkChangeReceiver extends BroadcastReceiver{@Overridepublic void onReceive(Context arg0, Intent arg1) {// TODO Auto-generated method stubToast.makeText(MainActivity.this, "network changes", Toast.LENGTH_SHORT).show();}}}
NetChangeReceiver是一个内部类,继承自Broadcast,这是一个广播接收器,重写onReceiver()方法,实现收到该接收器收到广播后的逻辑操作。

在MainActivity中,重写onCreat(),使用IntentFilter定义广播接收器要接受的广播,使用registerReceiver方法动态注册广播接收器。

重写onDestroy()使用unregisterReceiver解除注册。

关于IntentFilter,我找到一篇很不错的文章,这里先贴上原文链接,在下一篇博客中会有关于IntentFilter的深入学习

IntentFilter详解


0 0
原创粉丝点击