Activity之间传递bitmap,Observer观察者模式
生活随笔
收集整理的這篇文章主要介紹了
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观察者模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java中List Set Map 是否
- 下一篇: 02ython基础知识(一)