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;
    }

    @Override
    public void addObserver(Observer observer) {
        // TODO Auto-generated method stub
        observers.add(observer);
    }

    @Override
    public boolean removeObserver(Observer observer) {
        // TODO Auto-generated method stub
        return observers.remove(observer);
    }

    @Override
    public void notifyObserver(int id, int intparam, String param, Bitmap bitmap) {
        // TODO Auto-generated method stub
        for (Observer observer : observers) {
            observer.update(id,intparam,param,bitmap);
        }
    }
}

开始使用:

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

private Observer deleteObserver = new Observer() {
    @Override
    public 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;//订单ID
        public 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;
    }

    @Override
    public void addObserver(MyObserver observer) {
        // TODO Auto-generated method stub
        observers.add(observer);
    }

    @Override
    public boolean removeObserver(MyObserver observer) {
        // TODO Auto-generated method stub
        return observers.remove(observer);
    }

    @Override
    public void notifyObserver(int id, int intparam, String param, MqttMsgBean bitmap) {
        // TODO Auto-generated method stub
        for (MyObserver observer : observers) {
            observer.update(id,intparam,param,bitmap);
        }
    }

    @Override
    public 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 {

    @Override
    protected 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() {
        @Override
        public void update(int id, int intparameter, String string, MqttMsgBean bitmap) {
            Observernotice(id,intparameter,string,bitmap);
        }
    };


    @Override
    protected void onDestroy() {
        super.onDestroy();
        ObServernotice.getInstance().removeObserver(observer);
    }

    public abstract void Observernotice(int id,int intp,String stringp,MqttMsgBean bean);
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值