ObserverManager类:
/*** 1、观察者模式管理类*/
class ObserverManager : SubjectListener {/*** 观察者集合*/private val list = ArrayList<ObserverListener>()override fun add(observerListener: ObserverListener) {// 加入队列list.add(observerListener)}override fun notifyObserver(count: String) {// 通知观察者刷新数据for (observerListener in list) {observerListener.observerUpData(count)}}override fun remove(observerListener: ObserverListener) {// 从监听队列删除list.remove(observerListener)}companion object {val instance: ObserverManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) {ObserverManager()}}
}/*** 2、观察者接口*/
interface ObserverListener {/*** 刷新操作* @param count 传输的内容*/fun observerUpData(count: String)
}/*** 3、被观察者接口*/
interface SubjectListener {/*** 添加监听*/fun add(observerListener: ObserverListener)/*** 通知的内容*/fun notifyObserver(count: String)/*** 删除*/fun remove(observerListener: ObserverListener)
}

MainActivity

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import com.example.test.common.ObserverListener
import com.example.test.common.ObserverManagerclass MainActivity : AppCompatActivity(), ObserverListener {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)// 注册观察者ObserverManager.instance.add(this)val intent= Intent(this@MainActivity,MainActivity2::class.java)startActivity(intent)}override fun observerUpData(count: String) {Log.e("111","=监听到==》$count")}override fun onDestroy() {super.onDestroy()ObserverManager.instance.remove(this)}
}
MainActivity2
class MainActivity2 : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main2)}//    按钮点击通知观察者,触发fun bt_click(view: View) {// 传输数据到第一个页面ObserverManager.instance.notifyObserver("我是第二页面的数据,触发更新数据啦!!!")}
}

点击按钮触发通知观察者事件:

缺点:响应时间在0.5s左右

kotlin——观察者模式相关推荐

  1. Kotlin - 改良观察者模式

    欢迎关注微信公众号:FSA全栈行动

  2. Kotlin 4 构造,对象,修饰符,关键字,委托

    注:当前文档为Kotlin自学总结,若什么地方含义模糊不清,敬请指教,谢谢:-). 目录:- 构造函数- 对象- 匿名对象- 对象声明- 对象表达式和对象声明之间的语义差异- 修饰符- 关键字- 委托 ...

  3. Android开发之使用观察者模式结合推送实现订单自动刷新

    老套路:先上效果图:请看第二个订单状态 说下思路:订单状态改变是后台改变了,然后通过三方推送订单数据到手机,手机端通过拿到推送的数据进行自动刷新订单状态,这里面用到了Java设计模式中的:观察者模式. ...

  4. Kotlin学习笔记 第二章 类与对象 第十四 十五节 委托 委托属性

    参考链接 Kotlin官方文档 https://kotlinlang.org/docs/home.html 中文网站 https://www.kotlincn.net/docs/reference/p ...

  5. android观察者模式例子,Android-Kotlin实现观察者模式的小案例

    在日常的Android开发当中,我们肯定会遇到要使用观察者模式的场景.下面分享一下利用如何用Kotlin实现Android的交互代码. 源码 1.创建两个接口 /** * 类说明:观察者接口 * * ...

  6. 《Kotin 极简教程》第14章 使用 Kotlin DSL

    第14章 使用 Kotlin DSL 最新上架!!!< Kotlin极简教程> 陈光剑 (机械工业出版社) 可直接打开京东,淘宝,当当===> 搜索: Kotlin 极简教程 htt ...

  7. Kotlin -by 详解

    Kotlin 中 by 关键字用来简化实现代理 (委托) 模式,不仅可以类代理,还可以代理类属性, 监听属性变化,下面我们来介绍by的几种主要使用场景: 类的代理 class 属性延迟加载 lazy ...

  8. MVVM+Retrofit+Kotlin网络框架封装

    上篇文章讲了MVVM入门,网络请求部分非常简单和原始,本篇则是上一篇的进阶,主要讲解如何在vm中使用协程结合Retrofit进行网络框架的封装. GitHub完整版:https://github.co ...

  9. Kotlin “谈” “弹” “潭”

    Kotlin "谈" "弹" "潭" 本篇针对使用Java的Android开发者,快速入手Kotlin,期间可能啰啰嗦嗦稀里糊涂缓缓乎乎穿插 ...

最新文章

  1. Python培训就业怎么样?
  2. 为什么深度神经网络这么难训练?| 赠书
  3. 记一次mpvue开发完整小程序相关笔记
  4. linux 读书笔记
  5. soc 设计soc设计 uml实务手册_采用 USB4 技术升级 SoC 设计
  6. TOML-To-Go 更新,支持暗黑模式
  7. 使用Spring Boot和H2可以正常工作的原型
  8. memcpy/memset函数的c语言实现
  9. 不同种类的ICP算法
  10. 我国首次举办工业互联网“人机对抗”竞赛 检验独创理论独有技术有效性
  11. java设计汽车为父类_JAVA设计一个汽车类作为父类,包含汽车的相关属性和方法。电动汽车,普通汽车,混合汽车,...
  12. Python print 不换行,Print Without Newline In Python
  13. 循环左移和循环右移指令_工业机器人课程:ABB知识点30:循环指令——WHILE
  14. 阿里代码规范插件安装和使用技巧
  15. 拯救阿拉德大陆--竞码编程H-20‘
  16. 开头决胜武器:软文开头的4种常用写法
  17. Cracker学习——任务1
  18. Django邮件应用--QQ邮箱、网易邮箱(一)
  19. 数据挖掘之关联规则挖掘的一些定义
  20. 如何运行linux中的vi,如何在linux中vi使用方法

热门文章

  1. UltraEdit--用法--快捷键/配置/背景色/字体大小
  2. 怎么做个修改ip服务器,自己做一个服务器怎么固定ip地址
  3. 041_CSS及案例-网站主页模板
  4. win10关闭快速启动_win10系统快速启动的坏处
  5. 树:BFS,DFS解Leetcode电话号码的字母组合问题
  6. [ROS] sh脚本文件,source : not found问题
  7. Java项目:游戏点评系统(java+SSM+JSP+JavaScript+mysql)
  8. 数字人民币问答-什么是数字人名币?
  9. 《面向对象程序设计》课程设计
  10. 3D建模教程:3DMAX制作电视机模型!