Activity之间传递bitmap,Observer观察者模式
使用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观察者模式相关推荐
- Android截屏幕实现,截取屏幕为bitmap,并保存进手机图库,activity之间传递bitmap对象
Android截屏幕实现,截取超过一屏幕的长图,截取当前显示的一屏幕的图片,截图屏幕内的部分图片,并保存到本地,更新到手机图库中:当然还有一种bitmap在activity之间传递的需求 踩坑-–&g ...
- android 不同activity之间传递数据
1> 不同activity之间传递数据: Intent intent=new Intent(); intent.setClass(activity1.this,activity2.class); ...
- 不同Activity之间传递数据--Bundle对象和startActivityForResult方法的实现
首先,由于Activity是Android四大组件之一,如果一个应用程序中包含不止一个Activity,则需要在AndroidManifest.xml文件中进行声明. 例如进行如下的声明(程序中包含两 ...
- Android中如何使用Intent在Activity之间传递对象[使用Serializable或者Parcelable]
Android中如何使用Intent在Activity之间传递对象[使用Serializable或者Parcelable] 在Android中的不同Activity之间传递对象,我们可以考虑采用Bun ...
- 大叔也说Xamarin~Android篇~Activity之间传递数组
大叔也说Xamarin~Android篇~Activity之间传递数组 原文:大叔也说Xamarin~Android篇~Activity之间传递数组 我们在开发应用程序时,不可能只使用一个Layout ...
- java 传递intent_Android中使用Intent在Activity之间传递对象(使用Serializable或者Parcelable)的方法...
Android中的不同Activity之间传递对象,我们可以考虑采用Bundle.putSerializable(Key,Object);也可以考虑采用Bundle.putParcelable(Key ...
- Android Activity之间传递类对象
一.简介 开发过程中,Activity之间传递数据是必不可少的,Android中使用Intent和Bundle作为数据载体,在Activity之间传递,对于基础数据类型,Bundle已经提供了相关的p ...
- 【转】 android之如何在两个activity之间传递handler_利用broadcast广播机制
原文:http://blog.csdn.net/jason0539/article/details/18075293 这算是如何在两个activity之间传递handler的解决方案二了,解决方案一见 ...
- 通过BitmapFactory.Options解决activity之间传递图片出现内存溢出(OOM)问题
通过BitmapFactory.Options解决activity之间传递图片出现内存溢出(OOM)问题 参考文章: (1)通过BitmapFactory.Options解决activity之间传递图 ...
最新文章
- JavaSE(九)——正则表达式、Date类、集合、泛型
- elasticsearch 删除满足条件的语句_ElasticSearch的基本概念和集群分布式底层实现
- 方程求根(牛顿迭代法)
- PAT1137 Final Grading
- android 修改 dpi_努比亚 Z11|魔趣100|安卓10.0|归属地|机型修改|性能调整|稳定流畅...
- PHP数字金额转换成中文大写金额
- 创建销售订单的BAPI
- 20190604第二次月考
- 吾生有涯 而知也无涯
- 如何在Mac上安全彻底的卸载软件?
- #微软MVP分享# WP手机使用记录
- 计算机入门基础知识!学编程从认识计算机开始!
- 怎么释放gpu内存占用
- Vue 正确理解mounted、beforeUpdate、updated三个钩子函数的关系
- 域服务器用户一直被锁,Windows Server 2019 域用户账户锁定策略
- 区块链开发(五)搭建以太坊区块链浏览器
- 微信小程序-监听屏幕滚动
- jeecms服务器响应失败,后台提示“服务请求发生了错误”,原因不明
- PS3111开卡量产成功教程,PS3111+ASM235CM双头板子体验,DIY固态U盘小记+PS3111开卡工具
- 机器学习(线性模型)
热门文章
- [vue] vue的:class和:style有几种表示方式?
- [vue] 你了解什么是函数式组件吗?
- [js] 对`a == (‘1‘||‘2‘||‘3‘) ? false : true`写法进行改进,写出你优化后的方法
- 工作83:wacch的使用
- 前端学习(1928)vue之电商管理系统电商系统之美化一层循环的UI结构for循环ui美化
- 前端学习(1764):前端调试值之性能分析的方法二
- oracle之基本的sql_select语句之课后练习
- 第一百五十一期:最新计算机技能需求排名出炉:Python仅排第三,第一你猜得到吗?
- 第一百三十一期:2019年容器使用报告:Docker 和 Kubernetes 王者地位不倒!
- 68 cookie在登录中的作用