1.观察者模式(Observer Pattern)简介
当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。通俗的举个例子,以前没有电热水器的时候,我们需要将水壶放到炉灶上加热,并且守在旁边或者隔一段时间主动的来查看水壶中的水是否被烧开,如果烧开了就停止加热,反之则继续等待。但是现在我们有了电热水壶,此时我们可以给电热水壶设置一个指定的温度,让其达到这个温度时发出铃声来主动通知我。这里的设定温度(观察者注册listener)以及电热水壶的主动通知(通过注册的listener回调通知观察者)就类似观察者模式的运作。Observer Pattern的关系图大致如下

2. 源码修改概览
下面就让我们自定的HIDL service支持电热水壶的主动通知功能,整体源码的修改如下。
flagstaff@flagstaff-pc:~/aosp_r.lns/test/flagstaffTest$ git show HEAD --stat
commit 527add63b05a34f3c5fc21a8f5097965742885cc (HEAD -> master)
Author: flagstaff <flagstaff@fake.com>
Date: Mon Feb 7 20:59:18 2022 +0800
1.Supportting observer pattern for CustomHardware HIDL service.
2.serviceModelClient supports registerWaterTemperatureListener.
Signed-off-by: flagstaff <flagstaff@fake.com>
hardware/interfaces/custom_hardware/1.0/Android.bp | 1 +
hardware/interfaces/custom_hardware/1.0/ICustomHardware.hal | 4 ++++
hardware/interfaces/custom_hardware/1.0/IWaterTemperatureListener.hal | 6 ++++++
hardware/interfaces/custom_hardware/1.0/default/include/CustomHardware.h | 20 ++++++++++++++++++--
hardware/interfaces/custom_hardware/1.0/default/src/CustomHardware.cpp | 47 ++++++++++++++++++++++++++++++++++++

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



