一、概要:
安卓操作系统会把系统的各种操作通过广播事件广播给所有的应用,各应用自己实现各自需要监听的广播事件。根据收到的事件去执行相应的操作。
二、涉及方法:
BroadcastReceiver用于监听被广播的事件(intent);
为了实现监听,BroadcastReceiver必须进行注册广播,注册的方法有2种:
- 一种是通过代码注册;
- 另一种是通过Manifest注册(Manifest内注册的BroadcastReceiver在应用程序关闭后依然会接收到广播出来的对象)
本文讲如何通过代码来注册广播。
三、实现广播的步骤:
1、实现一个Receiver:采用回调方式
package 这里是我们的包名;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
/**
* Created by Luca on 2017/10/8.
* E-Mail:yangzoucn@163.com
* Deprecated:
*/
public class RefreshUserInfoReceiver extends BroadcastReceiver {
private Context mContext;
private RefreshListener mRefreshListener;
@Override
public void onReceive(Context context, Intent intent) {
if(intent!=null){
mRefreshListener.Refresh(intent.getStringExtra("actionName"));
}
}
public void updateUserInfo(Context mContext,RefreshListener mRefreshListener){
this.mRefreshListener=mRefreshListener;
this.mContext=mContext;
}
public static interface RefreshListener{
void Refresh(String actionName);
}
}
2、发送广播
在需要进行发送广播操作的逻辑内加入发送广播的操作:
//发送广播
Intent intent = new Intent();
intent.putExtra("actionName","thrid_logined");
intent.setAction("userCenterBroadcast");
sendBroadcast(intent);
3、接收广播并进行后续操作
//注册广播
RefreshUserInfoReceiver userInfoReceiver=new RefreshUserInfoReceiver(); //实例化第一步的那个类
IntentFilter intentFilter=new IntentFilter();
intentFilter.addAction("userCenterBroadcast"); //设置广播名,注意此处Action与上一步注册的Action是一致的哦“userCenterBroadcast”
getContext().registerReceiver(userInfoReceiver,intentFilter); //注册广播
userInfoReceiver.onReceive(getContext(),null);
userInfoReceiver.updateUserInfo(getContext(), new RefreshUserInfoReceiver.RefreshListener() {
@Override
public void Refresh(final String actionName) {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
if( actionName.equals("thrid_logined") ) //这里进行具体广播类别判断,以便进行对应逻辑操作
{
//匹配到了对应广播的actionName后的 后续操作处理逻辑代码
}
}
});
}
});
就是这么简单三步,实现一个简单广播。
以上,感谢阅读:)
想要打赏,请点击这里