使用Observer模式进行传递

三个主要类:Observer、Subject、TestObServernotice

/*** 作者:created by meixi* 邮箱:15913707499@163.com* 日期:2019/5/23 15*/public interface Observer {void update(int id, int intparameter, String string, Bitmap bitmap);
}

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

public interface Subject {/*** 注册一个观察者*/void addObserver(Observer observer);/*** 删除一个观察者** @return 是否删除成功*/boolean removeObserver(Observer observer);/*** 通知所有的观察者** @param id 对应观察者的id*/void notifyObserver(int id,int intparameter,String s,Bitmap bitmap);}

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

public class TestObServernotice implements Subject {private static Subject subject;private List<Observer> observers = new ArrayList<>();private TestObServernotice() {// TODO Auto-generated constructor stub}public static Subject getInstance() {if (null == subject) {synchronized (TestObServernotice.class) {if (null == subject)subject = new TestObServernotice();}}return subject;}@Overridepublic void addObserver(Observer observer) {// TODO Auto-generated method stubobservers.add(observer);}@Overridepublic boolean removeObserver(Observer observer) {// TODO Auto-generated method stubreturn observers.remove(observer);}@Overridepublic void notifyObserver(int id, int intparam, String param, Bitmap bitmap) {// TODO Auto-generated method stubfor (Observer observer : observers) {observer.update(id,intparam,param,bitmap);}}
}

开始使用:

观察者中注册Observer,如MainActivity中注册

private Observer deleteObserver = new Observer() {@Overridepublic void update(int id,int intparam,String param) {if (id==11){}}
};
TestObServernotice.getInstance().addObserver(deleteObserver);

同时注意删除观察者

@Override
protected void onDestroy() {super.onDestroy();TestObServernotice.getInstance().removeObserver(deleteObserver);deleteObserver = null;Log.v("lgq", "......11..onDestroy....");
}

调用,通知观察者,主要在receiver中调用,fragment,activity都可以调用,跨界面刷新数据

TestObServernotice.getInstance().notifyObserver(111, 1, "6666", null)

改进版本

public class MqttMsgBean {//public ParamBean data;public chuhuoBean orders;public String type;public String macno;public int speed;public String order_id;public int user_id;public static class ParamBean {/*** number : 1*/public String version;//版本号public String url;//apk下载路径public String pickcode;//取货码public String order_id;//订单IDpublic int order_user_id;//订单类型0安卓屏。1公众号、2.预定}public static class chuhuoBean {public int amount;//数量public int length;//长度}
}
public interface MyObserver {void update(int id, int intparameter, String string, MqttMsgBean bitmap);
}
 */
public class ObServernotice implements Subject {private static Subject subject;private List<MyObserver> observers = new ArrayList<>();private ObServernotice() {// TODO Auto-generated constructor stub}public static Subject getInstance() {if (null == subject) {synchronized (ObServernotice.class) {if (null == subject){subject = new ObServernotice();}}}return subject;}@Overridepublic void addObserver(MyObserver observer) {// TODO Auto-generated method stubobservers.add(observer);}@Overridepublic boolean removeObserver(MyObserver observer) {// TODO Auto-generated method stubreturn observers.remove(observer);}@Overridepublic void notifyObserver(int id, int intparam, String param, MqttMsgBean bitmap) {// TODO Auto-generated method stubfor (MyObserver observer : observers) {observer.update(id,intparam,param,bitmap);}}@Overridepublic void notifyObserver(int id) {for (MyObserver observer : observers) {observer.update(id,0,"",null);}}
}
public interface Subject {/*** 注册一个观察者*/void addObserver(MyObserver observer);/*** 删除一个观察者** @return 是否删除成功*/boolean removeObserver(MyObserver observer);/*** 通知所有的观察者** @param id 对应观察者的id*/void notifyObserver(int id, int intparameter, String s, MqttMsgBean bitmap);void notifyObserver(int id);}
public interface MyObserver {void update(int id, int intparameter, String string, MqttMsgBean bitmap);
}
public abstract class BaseClass extends Activity {@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);ObServernotice.getInstance().addObserver(observer);}public void setbutt(){Button button = findViewById(R.id.abc);button.setText("aaaaaaaaa2322");}public void mStartactivity(Class<? extends Activity> cls){startActivity(new Intent(BaseClass.this,cls));}public abstract void say();MyObserver observer = new MyObserver() {@Overridepublic void update(int id, int intparameter, String string, MqttMsgBean bitmap) {Observernotice(id,intparameter,string,bitmap);}};@Overrideprotected void onDestroy() {super.onDestroy();ObServernotice.getInstance().removeObserver(observer);}public abstract void Observernotice(int id,int intp,String stringp,MqttMsgBean bean);
}

Activity之间传递bitmap,Observer观察者模式相关推荐

  1. Android截屏幕实现,截取屏幕为bitmap,并保存进手机图库,activity之间传递bitmap对象

    Android截屏幕实现,截取超过一屏幕的长图,截取当前显示的一屏幕的图片,截图屏幕内的部分图片,并保存到本地,更新到手机图库中:当然还有一种bitmap在activity之间传递的需求 踩坑-–&g ...

  2. android 不同activity之间传递数据

    1> 不同activity之间传递数据: Intent intent=new Intent(); intent.setClass(activity1.this,activity2.class); ...

  3. 不同Activity之间传递数据--Bundle对象和startActivityForResult方法的实现

    首先,由于Activity是Android四大组件之一,如果一个应用程序中包含不止一个Activity,则需要在AndroidManifest.xml文件中进行声明. 例如进行如下的声明(程序中包含两 ...

  4. ​Android中如何使用Intent在Activity之间传递对象[使用Serializable或者Parcelable]

    Android中如何使用Intent在Activity之间传递对象[使用Serializable或者Parcelable] 在Android中的不同Activity之间传递对象,我们可以考虑采用Bun ...

  5. 大叔也说Xamarin~Android篇~Activity之间传递数组

    大叔也说Xamarin~Android篇~Activity之间传递数组 原文:大叔也说Xamarin~Android篇~Activity之间传递数组 我们在开发应用程序时,不可能只使用一个Layout ...

  6. java 传递intent_Android中使用Intent在Activity之间传递对象(使用Serializable或者Parcelable)的方法...

    Android中的不同Activity之间传递对象,我们可以考虑采用Bundle.putSerializable(Key,Object);也可以考虑采用Bundle.putParcelable(Key ...

  7. Android Activity之间传递类对象

    一.简介 开发过程中,Activity之间传递数据是必不可少的,Android中使用Intent和Bundle作为数据载体,在Activity之间传递,对于基础数据类型,Bundle已经提供了相关的p ...

  8. 【转】 android之如何在两个activity之间传递handler_利用broadcast广播机制

    原文:http://blog.csdn.net/jason0539/article/details/18075293 这算是如何在两个activity之间传递handler的解决方案二了,解决方案一见 ...

  9. 通过BitmapFactory.Options解决activity之间传递图片出现内存溢出(OOM)问题

    通过BitmapFactory.Options解决activity之间传递图片出现内存溢出(OOM)问题 参考文章: (1)通过BitmapFactory.Options解决activity之间传递图 ...

最新文章

  1. JavaSE(九)——正则表达式、Date类、集合、泛型
  2. elasticsearch 删除满足条件的语句_ElasticSearch的基本概念和集群分布式底层实现
  3. 方程求根(牛顿迭代法)
  4. PAT1137 Final Grading
  5. android 修改 dpi_努比亚 Z11|魔趣100|安卓10.0|归属地|机型修改|性能调整|稳定流畅...
  6. PHP数字金额转换成中文大写金额
  7. 创建销售订单的BAPI
  8. 20190604第二次月考
  9. 吾生有涯 而知也无涯
  10. 如何在Mac上安全彻底的卸载软件?
  11. #微软MVP分享# WP手机使用记录
  12. 计算机入门基础知识!学编程从认识计算机开始!
  13. 怎么释放gpu内存占用
  14. Vue 正确理解mounted、beforeUpdate、updated三个钩子函数的关系
  15. 域服务器用户一直被锁,Windows Server 2019 域用户账户锁定策略
  16. 区块链开发(五)搭建以太坊区块链浏览器
  17. 微信小程序-监听屏幕滚动
  18. jeecms服务器响应失败,后台提示“服务请求发生了错误”,原因不明
  19. PS3111开卡量产成功教程,PS3111+ASM235CM双头板子体验,DIY固态U盘小记+PS3111开卡工具
  20. 机器学习(线性模型)

热门文章

  1. [vue] vue的:class和:style有几种表示方式?
  2. [vue] 你了解什么是函数式组件吗?
  3. [js] 对`a == (‘1‘||‘2‘||‘3‘) ? false : true`写法进行改进,写出你优化后的方法
  4. 工作83:wacch的使用
  5. 前端学习(1928)vue之电商管理系统电商系统之美化一层循环的UI结构for循环ui美化
  6. 前端学习(1764):前端调试值之性能分析的方法二
  7. oracle之基本的sql_select语句之课后练习
  8. 第一百五十一期:最新计算机技能需求排名出炉:Python仅排第三,第一你猜得到吗?
  9. 第一百三十一期:2019年容器使用报告:Docker 和 Kubernetes 王者地位不倒!
  10. 68 cookie在登录中的作用