android经典的消费生产模式,生产消费者模式与Handler

Processor类需要有两个功能,一个是返回当前的地理信息,另一个功能是对信息进行处理加工后返回信息。所以,我们提供一个IProcess接口

public interface IProcessor {

void onGpsChanged(GpsTracker.GpsEntity gpsEntity);

void onSensorChanged(SensorTracker.SensorEntity sensorEntity);

void close();

void registerTripUpdateListener(TripManager.OnTripUpdateListener listener);

void unregisterTripUpdateListener(TripManager.OnTripUpdateListener listener);

}

我们在TripManager中申明IProcessor,在TripTracker中回调数据。数据最终需要回调给外层的,这个接口不能在TripManager中,需要在Processor中进行处理。

public class Processor implements IProcessor {

private ArrayList listeners = new ArrayList<>();

@Override

public void onGpsChanged(GpsTracker.GpsEntity gpsEntity) {

}

@Override

public void onSensorChanged(SensorTracker.SensorEntity sensorEntity) {

}

@Override

public void close() {

//flush

//

}

@Override

public void registerTripUpdateListener(TripManager.OnTripUpdateListener listener) {

this.listeners.add(listener);

}

@Override

public void unregisterTripUpdateListener(TripManager.OnTripUpdateListener listener) {

this.listeners.remove(listener);

}

}

HandlerThread handlerThread = new HandlerThread("processor");

handler = new Handler(handlerThread.getLooper()) {

@Override

public void handleMessage(Message msg) {

super.handleMessage(msg);

mProcessor.onGpsChanged((GpsTracker.GpsEntity) msg.obj);

}

};

为什么我们要用这里要用Handler?

数据的生产和消费需要一个过程

生产者只负责生产数据,不管消费,和数据的消费没有关系

Processor和Location产生的数据进行解耦,可以写一个中间类,这里可以利用线程的生产消费者模式处理,不过我们没有必要自己写一个,我们可以利用Android中的Handler进行处理,利用队列嘛,先进先出,帮我们管理消息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值