EventBus

来源:互联网 发布:为什么app连不上网络 编辑:程序博客网 时间:2024/06/03 20:42

Message

public interface Message {    public void click(String message);}
MessageEvent
public class MessageEvent {    public boolean tag;    public MessageEvent(boolean tag){        this.tag = tag;    }    public boolean isTag() {        return tag;    }    public void setTag(boolean tag) {        this.tag = tag;    }}

EventListener

import java.util.ArrayList;import java.util.List;/** * Created by muhanxi on 17/11/29. */public class EventListener {    private static EventListener instance = null ;    private List<Message> list = new ArrayList();    private EventListener(){    }    public static EventListener getInstance(){        if(instance == null){            synchronized (EventListener.class){                if(instance == null){                    instance = new EventListener();                }            }        }        return instance;    }    /**     * 注册     * @param message     */    public void register(Message message){        list.add(message);    }    public void unRegister(Message message){        list.remove(message);    }    /**     * 发送     */    public void post(String msg){        for (Message message : list){            message.click(msg);        }    }}


Main8Activity
import android.content.Intent;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.widget.Button;import android.widget.Toast;import com.example.muhanxi.frescodemo.R;import org.greenrobot.eventbus.EventBus;import org.greenrobot.eventbus.Subscribe;import butterknife.BindView;import butterknife.ButterKnife;import butterknife.OnClick;public class Main8Activity extends AppCompatActivity implements Message {    @BindView(R.id.btn8)    Button btn8;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main8);        ButterKnife.bind(this);        EventBus.getDefault().register(this);        EventListener.getInstance().register(this);//        EventListener.getInstance().//        Executor executor = Executors.    }//    ASYNC 异步 表示订阅者所在子线程//BACKGROUND 后台线程    @Subscribe    public void onMessageEvent(MessageEvent event){        System.out.println("event Main8Activity = " + event.isTag());        System.out.println(Thread.currentThread().getName());//        EventBus.getDefault().re    }    @OnClick(R.id.btn8)    public void onViewClicked() {        startActivity(new Intent(this,Main9Activity.class));    }    @Override    protected void onDestroy() {        super.onDestroy();        EventBus.getDefault().unregister(this);    }    @Override    public void click(String msg) {        Toast.makeText(this, "message", Toast.LENGTH_SHORT).show();    }}

Main9Activity



import android.content.Intent;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import com.example.muhanxi.frescodemo.R;import butterknife.BindView;import butterknife.ButterKnife;import butterknife.OnClick;public class Main9Activity extends AppCompatActivity {    @BindView(R.id.btn8)    Button btn8;    @BindView(R.id.btn81)    Button btn81;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main9);        ButterKnife.bind(this);    }    @OnClick({R.id.btn8, R.id.btn81})    public void onViewClicked(View view) {        switch (view.getId()) {            case R.id.btn8://                EventBus.getDefault().post(new MessageEvent(true));                EventListener.getInstance().post("1");//                new Thread(new Runnable() {//                    @Override//                    public void run() {//                        EventBus.getDefault().postSticky(new MessageEvent(true));////                    }//                }).start();                break;            case R.id.btn81:                startActivity(new Intent(this,Main10Activity.class));                break;                default:                    break;        }    }}

Main10Activity

import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import com.example.muhanxi.frescodemo.R;import org.greenrobot.eventbus.EventBus;import org.greenrobot.eventbus.Subscribe;public class Main10Activity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main10);        EventBus.getDefault().register(this);//        MessageEvent event = EventBus.getDefault().getStickyEvent(MessageEvent.class);//        EventBus.getDefault().removeStickyEvent(event);        EventBus.getDefault().removeStickyEvent(MessageEvent.class);    }    @Subscribe(sticky = true)    public void onMessageEvent(MessageEvent event){        System.out.println("event Main10Activity = " + event.isTag());    }    @Override    protected void onDestroy() {        super.onDestroy();        EventBus.getDefault().unregister(this);    }}




原创粉丝点击