Android观察者模式简单实现
来源:互联网 发布:能效监控中心 大数据 编辑:程序博客网 时间:2024/05/20 06:40
7观察者模式就是:当一个对象的状态发送改变时,所有依赖于它的对象都能得到通知并被自动更新。
下面介绍一种简单的使用方法,(下面有demo链接)先看一下project的目录构成:
ObserverListener是观察者接口,SubjectListener是被观察者接口,ObserverManager是观察者的管理类。
/** * Created by Administrator on 2017/9/28. * 观察者接口 */public interface ObserverListener { void observerUpData(String content);//刷新操作}
/** * Created by Administrator on 2017/9/28. * 被观察者接口 */public interface SubjectListener { void add(ObserverListener observerListener); void notifyObserver(String content); void remove(ObserverListener observerListener);}
下面是比较重要的管理类:
public class ObserverManager implements SubjectListener { private static ObserverManager observerManager; //观察者接口集合 private List<ObserverListener> list = new ArrayList<>(); /** * 单例 */ public static ObserverManager getInstance(){ if (null == observerManager){ synchronized (ObserverManager.class){ if (null == observerManager){ observerManager = new ObserverManager(); } } } return observerManager; } /** * 加入监听队列 */ @Override public void add(ObserverListener observerListener) { list.add(observerListener); } /** * 通知观察者刷新数据 */ @Override public void notifyObserver(String content) { for (ObserverListener observerListener : list){ observerListener.observerUpData(content); } } /** * 监听队列中移除 */ @Override public void remove(ObserverListener observerListener) { if (list.contains(observerListener)){ list.remove(observerListener); } }}
效果是当点击ThirdActivity中的按钮时,执行ObserverManager.getInstance().notifyObserver(“观察者请刷新信息”);
然后所有添加到监听队列的Activity都会更新数据,ObserverManager.getInstance().add(this)就是添加到监听队列的方法,更新操作执行在observerUpData(String content)方法中。
下面是3个Activity,很简单:
public class MainActivity extends AppCompatActivity implements ObserverListener { private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.tv); findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //ObserverManager.getInstance().notifyObserver("观察者请刷新信息"); Intent intent = new Intent(MainActivity.this,SecondActivity.class); startActivity(intent); } }); //注册 ObserverManager.getInstance().add(this); } @Override public void observerUpData(String content) { Log.d("vvvvvvvvvvvvvvv","11111111111"); textView.setText(content); }}
public class SecondActivity extends AppCompatActivity implements ObserverListener { private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); textView = (TextView) findViewById(R.id.tv2); findViewById(R.id.btn2).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(SecondActivity.this,ThirdActivity.class); startActivity(intent); } }); //注册 ObserverManager.getInstance().add(this); } @Override public void observerUpData(String content) { Log.d("vvvvvvvvvvvvvvv","2222222222"); textView.setText(content); }}
public class ThirdActivity extends AppCompatActivity implements ObserverListener { private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_third); textView = (TextView) findViewById(R.id.tv3); findViewById(R.id.btn3).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ObserverManager.getInstance().notifyObserver("观察者请刷新信息"); } }); //注册 ObserverManager.getInstance().add(this); } @Override public void observerUpData(String content) { Log.d("vvvvvvvvvvvvvvv","33333333333"); textView.setText(content); }}
布局都是一个TextView和一个Button。
代码下载地址:http://download.csdn.net/download/gsg8709/10003238
阅读全文
0 0
- Android观察者模式简单实现
- Android观察者模式的简单实现demo
- Android观察者模式的简单实现demo
- 观察者模式简单实现
- 观察者模式的简单实现
- 观察者模式实现简单聊天
- C++ 实现简单观察者模式
- js观察者模式简单实现
- 简单实现的观察者模式
- 一个类实现Android观察者模式(最简单实用的观察者模式)
- 观察者模式(简单的实现)
- 一个简单观察者模式的实现 cocos2dx
- 观察者模式java的简单实现
- KVO 观察者模式及简单实现
- 最简单的观察者模式实现
- RCTDeviceEventEmitter 实现简单的观察者模式
- Android中的观察者模式简单使用
- Android中观察者模式的简单应用
- 将一个long型值的时间转换成时间格式
- SMT32轻松输出带死区的4路PWM
- 人车密度估计--Towards perspective-free object counting with deep learning
- Linux Ubuntu常用命令总结
- screenrecord
- Android观察者模式简单实现
- 格式化日期
- PHP+mysql+Nginx环境安装
- 截取,拼接,替换字符串
- 重启tomcat连接数据库出错
- Spring事务管理讲解
- c++知识点
- 动态代理
- OpenStack Pike 版本中的 55 个新功能盘点