6、android单例模式下使用观察者模式
2015-12-17 22:24
387 查看
定义对象间的一种一个(Subject)对多(Observer)的依赖关系,当一个对象的状态发送改变时,所以依赖于它的对象都得到通知并被自动更新
使用方法:
1、定义一个接口,用来通知观察者。
public interface IObserverAdapter { void update(); }
2、定义一个类,增加,移除观察者和向观察者们发出通知。
public class Subject { private List<IObserverAdapter > mIObserverAdapterList; private static Subject mInstance; public static synchronized final Subject getInstance() { if (mInstance == null) { mInstance = new Subject(); } return mInstance; } public boolean registerIObserverAdapter (IObserverAdapter adapter) { if(null == adapter) { return false; } mIObserverAdapterList.add(adapter); return true; } public void unRegisterIObserverAdapter(IObserverAdapter adapter) { if (mIObserverAdapterList.remove(adapter)) { Log.d("Subject ", "unRegisterIObserverAdapter successfully!"); } else { Log.d("Subject ", "unRegisterIObserverAdapter error!"); } } private void update() { if(!ListUtil.isEmpty(mIObserverAdapterList)) { for(IObserverAdapter adapter : mIObserverAdapterList) { adapter.update(); } } } }
3、最后观察者实现观察接口去观察被观察者。
private class observer implements IObserverAdapter { private Subject mSubject; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mSubject = Subject.getInstance(); mSubject.registerIObserverAdapter(this); } @Override protected void onDestroy() { super.onDestroy(); if(mSubject != null) { mSubject .unRegisterIObserverAdapter(this); } } @Override public void update() { /**该干嘛干嘛*/ } }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories