首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏程序员开发工具

    Android lifecycle 实战及使用进阶

    LifecycleHandler(LifecycleOwner lifecycleOwner) { mLifecycleOwner = lifecycleOwner; addObserver (); } private void addObserver() { if (mLifecycleOwner ! = null) { mLifecycleOwner.getLifecycle().addObserver(new FullLifecycleObserverAstrong textdapter owner) { removeCallbacksAndMessages(null); } } 我们来看一下这一行代码 mLifecycleOwner.getLifecycle().addObserver 以后想观察 lifecycle 生命周期变化的话,只需要 mLifecycleOwner.getLifecycle().addObserver(new FullLifecycleObserverAdapter

    1.5K20发布于 2019-06-14
  • 来自专栏大数据学习笔记

    Java设计模式之观察者模式(发布/订阅模式)

    观察者模式又称为发布/订阅(Publish/Subscribe)模式 观察者设计模式涉及到两种角色:主题(Subject)和观察者(Observer) (1)Subject模块 Subjec模块有3个主要操作 addObserver www.processon.com在线画的UML图 2、简单样例 (1)主题接口 package observer; public interface Subject { //添加观察者 void addObserver observers=new ArrayList<Observer>(); //期刊版本 private int version; @Override public void addObserver "B"); CustomerObserver c = new CustomerObserver("C"); //将观察者注册到主题中 magazine.addObserver (a); magazine.addObserver(b); magazine.addObserver(c); //更新主题的数据,当数据更新后,会自动通知所有已注册的观察者

    51510编辑于 2022-05-06
  • 来自专栏iOS开发攻城狮的集散地

    iOS AVPlayer视频播放器

    总效果.gif 主要代码如下: //监测屏幕旋转 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector self.avPlayer.currentItem]; //添加AVPlayerItem开始缓冲通知 [[NSNotificationCenter defaultCenter] addObserver )object change:(NSDictionary *)change context:(void *)context; //监控播放速率 [self.avPlayer addObserver NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil]; //监控网络加载缓冲情况属性 [playerItem addObserver "loadedTimeRanges" options:NSKeyValueObservingOptionNew context:nil]; //监控是否可播放 [playerItem addObserver

    4.8K40发布于 2018-05-22
  • 来自专栏LieBrother

    行为型模式:观察者模式

    interface Observable { void addObserver(Observer observer); void removeObserver(Observer observer (xiaoHong); xiaoMing.addObserver(xiaoDong); xiaoMing.sendMessage("今天真开心"); // (xiaoHong2); xiaoMing2.addObserver(xiaoDong2); xiaoMing2.sendMessage("今天真开心"); (xiaoMing2); xiaoHong2.addObserver(xiaoDong2); xiaoHong2.sendMessage("今天和小明吵架了,屏蔽他的朋友圈 "); xiaoDong2.addObserver(xiaoMing2); xiaoDong2.addObserver(xiaoHong2); xiaoDong2

    51330发布于 2019-04-02
  • 来自专栏谈补锅

    通知 - NSNotificationCenter

    id)object userInfo:(NSDictionary *)userInfo; 6、注册通知监听器:   通知中心提供了方法类注册一个坚挺通知的监听器(Observer): - (void)addObserver ; NSString *notice2 = @"亚投行"; //步骤1、先注册通知的监听者 /* - (void)addObserver :per1 selector:@selector(MonitorMessage:) name:nil object:nil]; [center addObserver:per2 selector :@selector(MonitorMessage:) name:notice1 object:nil]; [center addObserver:per3 selector:@selector (MonitorMessage:) name:nil object:com1]; [center addObserver:per4 selector:@selector(MonitorMessage

    1.4K40发布于 2018-09-27
  • 来自专栏技术栈

    Java设计模式-观察者模式

    如果需要,具体观察者角色可以保有一个指向具体主题角色的引用,通常用一个子类实现 代码示例 抽象主题角色 public interface AbstractSubject { public void addObserver List<AbstractObserver> list = new ArrayList<AbstractObserver>(); @Override public void addObserver subject = new ConcreteSubject(); //为主题角色增加观察者对象,这里采用匿名内部类的方式,与AWT编程里的安装监听器类似 subject.addObserver update() { System.out.println("A同学您的APP需要更新"); } }); subject.addObserver (watcher1); watched.addObserver(watcher2); watched.count(10); } } 复制代码 总结 被观察者要继承

    67720发布于 2019-07-31
  • 来自专栏全栈程序员必看

    实现一个简单的发布订阅模式_vue订阅者发布者实现

    废话不多说直接上代码(此demo仅帮助理解发布/订阅模式): let Observable = { observers:[], // 订阅者集合 addObserver:function } function observer3(message){ console.log(`3---------${message}`); } // 添加订阅者 Observable.addObserver (observer1); Observable.addObserver(observer2); Observable.addObserver(observer3); // 向订阅者发布(通知)消息 Observable.notifyObservers

    75030编辑于 2022-08-04
  • 来自专栏csdn

    设计模式之观察者模式

    ConcreteSubject(具体主题) Observer(观察者) ConcreteObserver(具体观察者) 类图 示例代码 public interface Subject { void addObserver this.condition = condition; notifyObservers(); } @Override public void addObserver Observer weatherConditionDisplay = new WeatherConditionDisplay(); // 注册观察者 weatherStation.addObserver (temperatureDisplay); weatherStation.addObserver(weatherConditionDisplay); // 模拟天气数据更新

    21710编辑于 2024-04-10
  • 来自专栏前端自习课

    TypeScript 设计模式之观察者模式

    简单示例 定义观察目标接口(Subject)和观察者接口(Observer)// ObserverPattern.ts // 观察目标接口 interface Subject { addObserver (Leo); subject.addObserver(Robin); subject.addObserver(Pual); subject.addObserver(Lisa); subject.notifyObservers subject.notifyObservers(); } useObserver(); 完整演示代码如下: // ObserverPattern.ts interface Subject { addObserver void; } class ConcreteSubject implements Subject{ private observers: Observer[] = []; public addObserver (Leo); subject.addObserver(Robin); subject.addObserver(Pual); subject.addObserver(Lisa); subject.notifyObservers

    1.5K11发布于 2020-08-17
  • 来自专栏前端自习课

    【设计模式】689- TypeScript 设计模式之观察者模式

    简单示例 定义「观察目标接口」(Subject)和「观察者接口」(Observer) // ObserverPattern.ts // 观察目标接口 interface Subject { addObserver const Pual = new ConcreteObserver("Pual"); const Lisa = new ConcreteObserver("Lisa"); subject.addObserver (Leo); subject.addObserver(Robin); subject.addObserver(Pual); subject.addObserver(Lisa); subject.notifyObservers void; } class ConcreteSubject implements Subject{ private observers: Observer[] = []; public addObserver (Leo); subject.addObserver(Robin); subject.addObserver(Pual); subject.addObserver(Lisa); subject.notifyObservers

    72941发布于 2020-08-21
  • 来自专栏云原生布道专栏

    【API使用系列】Notification消息通知专题

    MRCObject - (id)init { if (self = [super init]) { [[NSNotificationCenter defaultCenter] addObserver 这点就可以证明,addObserver后,必须要有remove操作。 - (void)viewDidLoad { [superviewDidLoad]; [[NSNotificationCenter defaultCenter] addObserver: viewWillAppear:(BOOL)animated { [super viewWillAppear: animated]; [[NSNotificationCenter defaultCenter] addObserver 你这边可要注意了,一定要成双成对出现,如果你只在viewWillAppear 中 addObserver没有在viewWillDisappear 中 removeObserver那么当消息发生的时候,你的方法会被调用多次

    68810编辑于 2022-03-08
  • 来自专栏憧憬博客分享

    设计模式 | 观察者模式

    被观察者 到时候也好通知观察者 * Interface Observable */ interface Observable { // 添加观察者 public function addObserver function update() { echo '李四 有你的通知来了 快快行动'; } } //$pork = new Pork(); // //$pork->addObserver (new Aoppp()); //$pork->addObserver(new Lisi()); //$pork->setPrice(100); /** * 这个时候你发现 可以随便通知任何人, */ class ObserverUtil implements Observable { public $observableList; public function addObserver (new Aoppp()); $pork->addObserver(new Lisi()); $pork->setPrice(100); // 这样的话 你要监听鸡肉 还是什么乱七八糟的 都要方便很多了

    55620发布于 2020-07-20
  • 来自专栏正则

    AFNetworking源码探究(十九) —— UIKit相关之几个分类

    [activityIndicatorView stopAnimating]; } [notificationCenter addObserver af_startAnimating) name:AFNetworkingTaskDidResumeNotification object:task]; [notificationCenter addObserver af_stopAnimating) name:AFNetworkingTaskDidCompleteNotification object:task]; [notificationCenter addObserver stopAnimating]; } // 添加任务的开始暂停完成的通知 [notificationCenter addObserver af_startAnimating) name:AFNetworkingTaskDidResumeNotification object:task]; [notificationCenter addObserver

    60820发布于 2021-09-03
  • 来自专栏用户9379187的专栏

    iOS探索 -- KVO 的原理分析

    KVO 的初探 进行探索之前, 首先看看 KVO 是怎么使用的: // 方法 - (void)addObserver:(NSObject *)observer forKeyPath NSKeyValueObservingOptions)options context:(nullable void *)context; // 日常使用 [self.person addObserver 1. context 是什么 首先来看看官方文档里关于 context 的相关介绍: The context pointer in the addObserver:forKeyPath:options ensure notifications you receive are destined for your observer and not a superclass. // 大概意思是 // addObserver property (nonatomic, copy) NSString *name; + (instancetype)shareInstance; @end // 控制器 A [self.person addObserver

    40610编辑于 2022-06-17
  • 来自专栏JAVA乐园

    观察者模式:对象间的一种一对多的依赖关系

    Subject(抽象主题): public interface ISubject{ public void addObserver(Observer observer); public private Vector<Observer> observers = new Vector<>(); //增加一个观察者 @Override public void addObserver subject2"); Observer observer3=new ConcrereObserver("subject3"); //添加观察者 subject.addObserver (observer1); subject.addObserver(observer2); subject.addObserver(observer3); > obs; public Observable() { obs = new Vector<>(); } public synchronized void addObserver

    1.5K30发布于 2020-12-17
  • 来自专栏CV学习史

    Python vtk学习(1)

    MyEvent(vtk.vtkInteractorStyleTrackballCamera): def __init__(self, parent=None): self.AddObserver ("MiddleButtonPressEvent", self.middle_button_press_event) self.AddObserver("MiddleButtonReleaseEvent ", self.middle_button_release_event) self.AddObserver("LeftButtonPressEvent", self.left_button_press_event ) self.AddObserver("LeftButtonReleaseEvent", self.left_button_release_event) self.AddObserver ("RightButtonPressEvent", self.right_button_press_event) self.AddObserver("RightButtonReleaseEvent

    2.1K10发布于 2019-09-10
  • 来自专栏正则

    AFNetworking源码探究(三) —— GET请求实现之任务进度设置和通知监听

    typeof__(weakTask) strongTask = weakTask; [strongTask resume]; }]; } [task addObserver NSKeyValueObservingOptionNew context:NULL]; [self.uploadProgress addObserver 给Task和上传下载进度增加KVO观察 主要对应下面这几句代码 [task addObserver:self forKeyPath:NSStringFromSelector(@selector options:NSKeyValueObservingOptionNew context:NULL]; [self.uploadProgress addObserver addNotificationObserverForTask:(NSURLSessionTask *)task { [[NSNotificationCenter defaultCenter] addObserver

    65740发布于 2021-09-02
  • 来自专栏java程序员思维

    Head First 设计模式之观察者模式,你我都是发布者和订阅者

    代码实现 public interface Subject { //添加观察者 void addObserver(Observer obj); //移除观察者 void deleteObserver String info) { System.out.println(name+"得到作业:"+info); } } public interface Subject { //添加观察者 void addObserver (Observer o) { super.addObserver(o); } @Override public synchronized void deleteObserver(Observer (messageObserverTopicA); //b关注了享知行 messagePublishObservable.addObserver(messageObserverTopicB); // c关注了享知行 messagePublishObservable.addObserver(messageObserverTopicC); messagePublishObservable.pushMessage

    98140发布于 2019-05-24
  • 来自专栏全栈程序员必看

    replay视频播放器_怎么让手机音乐跟视频一起放

    用这个通知去实现监听avplayer.currentItem 代码如下 //给AVPlayerItem添加播放完成通知 [[NSNotificationCenter defaultCenter] addObserver 监控缓存区大小此时我们都需要监听AVPlayerItem, //监控状态属性,注意AVPlayer也有一个status属性,通过监控它的status也可以获得播放状态 [playerItem addObserver forKeyPath:@”status” options:NSKeyValueObservingOptionNew context:nil]; //监控网络加载情况属性 [playerItem addObserver forKeyPath:@”loadedTimeRanges” options:NSKeyValueObservingOptionNew context:nil]; //监控缓冲区大小 [playerItem addObserver

    1.9K10编辑于 2022-08-02
  • 来自专栏网络日志

    iOS-探索KVO|隐秘的角落

    NSKeyValueObservingOptionNew 接收新值 NSKeyValueObservingOptionInitial 您指示被观察对象使用选项 NSKeyValueObservingOptionInitial 发送立即更改通知(在 addObserver 可以通过这些选项的按位枚举接收多种 二、 Context [tool.ryuk addObserver:tool forKeyPath:@"name" options:NSKeyValueObservingOptionNew addObserver:forKeyPath:options:context: 消息中的 Context 指针可以包含任意数据,这些数据将在相应的更改通知中传递回观察者。 PersonAccountInterestRateContext; 注册观察者 - (void)registerAsObserverForAccount:(Account*)account { [account addObserver NSKeyValueObservingOptionOld) context:PersonAccountBalanceContext]; [account addObserver

    23210编辑于 2024-06-28
领券