在日常的Android开发当中,我们肯定会遇到要使用观察者模式的场景。下面分享一下利用如何用Kotlin实现Android的交互代码。

源码

1.创建两个接口

/**

* 类说明:观察者接口

*

* @author 裕博

*/

interface ObserverListener {

/**

* 刷新操作

* @param count 传输的内容

*/

fun observerUpData(count: String)

}

/**

* 类说明:被观察者接口

*

* @author 裕博

*/

interface SubjectListener {

/**

* 添加

*/

fun add(observerListener: ObserverListener)

/**

* 通知的内容

*/

fun notifyObserver(count: String)

/**

* 删除

*/

fun remove(observerListener: ObserverListener)

}

2.观察者管理类

/**

* 类说明:观察者模式管理类

*

* @author 裕博

*/

class ObserverManager : SubjectListener {

/**

* 观察者集合

*/

private val list = ArrayList()

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()

}

}

}

3.两个Activity示例

/**

* 类说明:观察者模式Kotlin版本

* @author 裕博

*/

class ObserverKotlinActivity :BaseActivityC(),ObserverListener{

override fun getLayoutId(): Int {

return R.layout.activity_observer_kotlin

}

override fun init() {

// 注册观察者

ObserverManager.instance.add(this)

// 跳转到第二个页面

mBtn.setOnClickListener {

jumpActivity(ObserverKotlinTestActivity::class.java)

}

}

override fun observerUpData(count: String) {

Log.e("Kotlin","===================执行成功")

mTvPrompt.text = count

}

override fun onDestroy() {

super.onDestroy()

ObserverManager.instance.remove(this)

}

}

/**

* 类说明:观察者测试页面

*/

class ObserverKotlinTestActivity : BaseActivityC() {

override fun getLayoutId(): Int {

return R.layout.activity_kotlin_test

}

override fun init() {

mBtnSend.setOnClickListener {

// 将这个数据传输到第一个页面

ObserverManager.instance.notifyObserver("Kotlin第一个页面更新数据啦!!!")

finish()

}

}

}

其中BaseActivityC是一个基类,如果小伙伴更详细的聊天源码可以访问我的一个项目https://github.com/wuyubo0522/AndroidCase

总结

上面是所有的源码,希望对学习Kotlin开发App的小伙伴有帮助。

android观察者模式例子,Android-Kotlin实现观察者模式的小案例相关推荐

  1. android 开关按钮例子,Android自学笔记之ToggleButton(开关按钮)的功能、特殊属性、用法...

    1.ToggleButton属性: 1>有两种状态:选中和未选中状态并需要为不同的状态设置不同的显示文本 2>android:checked="true" 3>a ...

  2. 使用Android Studio写一个发短信的小案例

    废话不多说,直接贴图 代码如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayoutan ...

  3. android webview 例子,android – webview shouldinterceptrequest示例

    那么简短的答案是它的工作原理与shouldOverrideUrlLoading(WebView视图,String url)非常相似,如 WebView tutorial所示. 要开始使用,请参阅下面的 ...

  4. android api 设置,Android API中文文档EditText

    Android API中文文档EditText是本文要介绍的内容,主要是来了解并学习Android API文档的帮助,具体关于Android API的内容的详解来看本文. 一.Android API中 ...

  5. 【Android笔记65】Android小案例之简易版的房贷计算器(附源代码)

    这篇文章,主要介绍如何使用Android实现一个简易版的房贷计算器小案例. 目录 一.房贷计算器 1.1.运行效果演示 1.2.前提准备 (1)等额本息和等额本金

  6. android 广播观察者,作业三——观察者模式在Android广播机制上的应用

    观察者模式在Android广播机制上的应用 点击跳转项目git地址:https://github.com/Arfer-ustc/practice-Android.git 一.观察者模式在Android ...

  7. android 观察者的框架,Android 架构师7 设计模式之观察者模式

    前言 当对象间存在一对多关系时,则使用观察者模式(Observer Pattern).比如,当一个对象被修改时,则会自动通知它的依赖对象.观察者模式属于行为型模式. 观察者模式.png 观察者模式 被 ...

  8. 观察者模式在android网络监控下的运用

    github:https://github.com/shonegg/NetMonitor 一.对观察者模式的理解: 1.观察者模式,又叫发布-订阅(Publish/Subscribe)模式,定义的是对 ...

  9. 在 Android 开发中使用 Kotlin 协程 (一) -- 初识 Kotlin 协程

    前言 最近在研究 Kotlin 协程,发现功能真的超级强大,很有用,而且很好学,如果你正在或计划使用 Kotlin 开发 Android,那么 Kotlin 协程你一定不能错过! 协程是什么? 我们平 ...

  10. 【译】将 Android 项目迁移到 Kotlin 语言

    本文讲的是[译]将 Android 项目迁移到 Kotlin 语言, 原文地址:Migrating an Android project to Kotlin 原文作者:Ben Weiss 译文出自:掘 ...

最新文章

  1. json字符串的理解
  2. python gif动态图的合成
  3. 拖动去掉边框的JFrame
  4. gulp与webpack的区别
  5. Codeforces Gym - 100917 部分题解
  6. Java的最新发展– 2018年4月下旬
  7. ebs oracle 落伍了吗_向不了解oracle EBS的人介绍Oracle EBS
  8. java递归解决百元百鸡_JS计算输出100元钱买100只鸡问题的解决方法
  9. java foxpro_java解析FoxPro DBF数据文件
  10. java实现lru缓存_Java中的LRU缓存实现
  11. mongdo通用类(C#版)
  12. 仅为代码实际运行资源付费 解构国内首个函数计算
  13. ACM-经典DP之Monkey and Banana——hdu1069
  14. arcgis制作空间变化图怎么做_Arcgis专题地图的编制
  15. [Ubuntu]安装微信/QQ/TIM的简便方法
  16. iOS自学-混合编程
  17. 设计模式~调停者(中介)模式-06
  18. %3chtml%3e%3c html,403禁止%3Chtml%3E%3Chead%3E%3Cmeta笨
  19. Ubuntu,CentOS安装TIM(QQ),liunx通用
  20. 教程:游戏LOGO=游戏符号+名字

热门文章

  1. Spring 依赖注入(一、注入方式)
  2. mybatis调用oracle存储过程例子.
  3. 基于win32的windows画板程序
  4. 我的软考之路(六)——数据结构与算法(4)之八大排序
  5. transient关键字和volatile关键字
  6. 项目展示-新浪微博客户端
  7. JVM分代垃圾回收策略的基础概念
  8. 数据分析应用统计学之分散性与变异性的测量【极差、四分位差、偏态系数、峰态系数、统计指标】
  9. java利用数组随机抽取幸运观众_java利用数组随机抽取幸运观众
  10. 微课|玩转Python轻松过二级:第1章课后习题解答