安卓EventBus的使用

来源:互联网 发布:mac连wifi需要wpa2密码 编辑:程序博客网 时间:2024/05/21 01:30

Androidstudio使用步骤:

1、导入依赖compile 'org.greenrobot:eventbus:3.0.0'

2.、Activity与服务传递数据

bean代码

public class MessageEvent {    public String text;    public MessageEvent(String text) {        this.text = text;    }    public String getText() {        return text;    }    public void setText(String text) {        this.text = text;    }}

activity代码

/** *Activity与服务之间传递数据 */public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Intent intent = new Intent(this,MyService.class);        startService(intent);    }    //2、添加注解,根据传递数据的类型判断是否执行(服务里面传递的数据类型为MessageEvent,服务开启后即执行这里)
    //priority:优先级,优先级高的方法先执行,并可以通过EventBus.getDefault().cancelEventDelivery(messageEvent);方法停止传递    //threadMode:指定线程模式
//POSTING:默认模式,订阅和事件发送在同一线程下进行
//MAIN:订阅在主线程下进行,可以直接修改UI
//BACKGROUND:如果事件发送在主线程,则订阅在子线程下进行,如果事件发送在子线程,则订阅也在该子线程中进行
//ASYNC:如果事件发送在主线程,则订阅在子线程下进行,如果事件发送在子线程,则订阅会在其他子线程中进行
@Subscribe(threadMode = ThreadMode.MAIN,priority = 10)
 public void show(MessageEvent event) {  
     Log.e("获取到数据", event.getText() );    }
    //如果服务里面传递的数据类型为Person,就执行这里,Person这个bean就不写了

    @Subscribe(threadMode = ThreadMode.MAIN,priority = 100)    public void show(Person person) {        Log.e("获取到数据", person.getName() );    }
@Override protected void onStart() { super.onStart(); //1、注册 EventBus.getDefault().register(this); } @Override protected void onDestroy() { super.onDestroy(); //3、解绑 EventBus.getDefault().unregister(this); }}
服务代码

public class MyService extends IntentService {    public MyService() {        super("MyService");    }    @Override    protected void onHandleIntent( Intent intent) {        //传递数据        EventBus.getDefault().post(new MessageEvent("FromService"));    }}


原创粉丝点击