解决、解耦的钥匙——观察者模式
定义
观察者模式定义了对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。
使用场景
- 关联行为场景
- 需要注意的是,关联行为是可拆分的,而不是“组合”关系
- 事件多级触发场景
- 跨系统的消息交换场景,如消息队列、事件总线的处理机制。
书写是为了更好地思考
观察者模式定义了对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。
Toast.makeText(context,"msg",Toast.Length_SHORT).show();
我们都知道调用了这行代码,便会触发显示 Toast 信息,但是从调用开始到显示出来的具体过程是怎么样的,里面具体实现又是怎么样的呢?
wiki 给出的定义如下:单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。
IPC 是 Inter-Process Communication 的缩写,含义为 进程间通信或者跨进程通信,是指两个进程之间进行数据交换的过程。
a
IPC 不是 Android 所独有的,任何一个操作系统都需要有相应的 IPC 机制。
在 Android 中最有特色的进程间通信方式就是 Binder 了, 通过 Binder 可以轻松实现进程间通信。
除了 Binder ,Android 还支持 Socket, 通过 Socket 也可以实现任意两个终端之间的通信,当然一个设备的两个进程之间的也可以通过 Socket 进行通信。
多进程的情况分两种:
Service 是一种计算型的组件。
简单地说,服务是一种不需要用户交互也可在后台运行的组件。 因此,我们应该仅在必要时才创建服务。
如需在主线程外部(也就是工作线程)执行工作,并且只是在用户正在与应用交互时才有此需要,则应创建新线程而非服务。
如果确实要使用服务,则默认情况下,它仍会在应用的主线程中运行,因此,如果服务执行的是密集型或阻塞性操作,那么应该在服务内创建新线程。
注意:默认情况下,服务与服务声明所在的应用运行于同一进程,而且运行于该应用的主线程中。
为了避免影响应用性能,您应在服务内启动新线程。
提起 Handler,相信大家都不会陌生,日常开发中不可避免地要使用到它。今天要讲的是消息机制。消息机制?咋听起来有点抽象。其实我们在使用 Handler 的时候,就使用了 Android 的消息机制。
从开发的角度来看,Handler 是 Android 消息机制的上层接口,这使得开发过程中只需要设计这方面的内容即可。但是作为一名合格的开发者,弄清它的实现原理是很有必要的。