您的位置:首页 > 编程语言

第一行代码 广播机制Broadcast Receiver 学习笔记

2018-03-03 11:39 507 查看

1、广播机制简介

广播分为两种:标准广播 有序广播

1)标准广播 就是发出一条消息 所有广播接受者都可以收到。

2)有序广播 就是发出一条广播 广播接收者按照优先级排序接收,并且可以在传播过程中被撤销。

2、举个实例动态注册监听网络变化

广播接收器可以对自己感兴趣的广播进行注册,这样有广播发出时,就能够收到该广播。

注册广播有两种:动态注册,静态注册。

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, "received local broadcast", Toast.LENGTH_SHORT).show();
}
}
}


我们可以看到MainActivity 定义了一个内部类 NetworkChangeReceiver,这个类是继承BroadcastReceiver,并重写父类的onreceiver方法。每当网络发生变化时,onReceiver()方法就会得到执行。

然后观察onCreat()方法。首先我们创建了一个IntentFilter实例,并且给它添加了一个值为android.net.com.CONNECTIVITY_CHANGE 的action。添加这一个action ,是因为当网络状态发生改变时,发出的就是这个广播。

接下来创建一个NetworkChangeReceiver实例,然后调用 registerReceiver()方法进行注册,将NetworkChangeReceiver 的实例和IntentFilter的实例都传进去。这样就NetworkChangeReceiver就能收到网络变化的广播。

文献参考:

第一行代码 Android 第二版 郭霖

本人郑重声明,本博客所著文章、图片版权归权利人持有,本博只做学习交流分享所用,不做任何商业用途。访问者可將本博提供的內容或服务用于个人学习、研究或欣赏,不得用于商业使用。同時,访问者应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人的合法权利;如果用于商业用途,须征得相关权利人的书面授权。若以上文章、图片的原作者不愿意在此展示內容,请及时通知在下,將及时予以刪除。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: