在service代码里实现广播接收者

service里:

// 初始化广播接收器
private MyBroadcastReceiver receviver = null;

private void initBroadcastReceiver() {
	// 创建一个IntentFilter对象,将其action指定为BluetoothDevice.ACTION_FOUND
	IntentFilter intentFilter = new IntentFilter();
	intentFilter.addAction(Constant.RELOAD_DATA);
	intentFilter.addAction(Constant.RELOAD_OPEN_DOORS_DISTANCE);
	receviver = new MyBroadcastReceiver();
	// 注册广播接收器
	registerReceiver(receviver, intentFilter);
}

private class MyBroadcastReceiver extends BroadcastReceiver {

	@Override
	public void onReceive(Context context, Intent intent) {
		String action = intent.getAction();
		if (action.equals(Constant.RELOAD_DATA)) {
			// 重新加载数据库
			System.out.println("get RELOAD_DATA");
			getDoorInfFromDB();
			return;
		} else if (action.equals(Constant.RELOAD_OPEN_DOORS_DISTANCE)) {
			// 这里得到实际距离,要将实际距离进行转化
			/**
			* 0========-5
			* 10=======-85
			*/
			openDistance = getSharedPreferences(Constant.NAME_CONFIG, Context.MODE_PRIVATE).getInt(Constant.KEY_DOOR_DISTANCE, -85);
			if (openDistance > -50) {
				openDistance = -50;
			}
			return;
		} else if (action.equals(Constant.RELOAD_OPEN_DOORS_DISTANCE_DEF)) {
			SharedPreferences preferences = getSharedPreferences(Constant.NAME_CONFIG, Context.MODE_PRIVATE);
			openDistance = preferences.getInt(Constant.KEY_DOOR_DISTANCE_DEFAULT, -75);
			return;
		}
	}
}

在activity里:

// 发送广播去重新加载数据
broadcastUpdate(Constant.RELOAD_DATA);

private void broadcastUpdate(final String action) {
	final Intent intent = new Intent(action);
	sendBroadcast(intent);
}

在onDestroy方法里要解除注册:

if (receviver != null) {
	unregisterReceiver(receviver);
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值