EventBus的简单使用

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;

import de.greenrobot.event.*;
import de.greenrobot.event.EventBus;

/**
 * EventBus的简单用法
 */
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //注册EventBus
        de.greenrobot.event.EventBus.getDefault().register(this);
    }

    //点击Button跳转到SecondActivity界面
    public void clickBtn(View view) {
        startActivity(new Intent(MainActivity.this, SecondActivity.class));
    }

    //经常使用:无论发送消息的方法是运行在哪个线程中,此方法都是运行在主线程中的
    public void onEventMainThread(EventMsg msg){
        String str = msg.getMsg();
        Log.i("TAG","onEventMainThread---"+"str:"+str+"----thread:"+Thread.currentThread().getName());
    }

    //由发送消息的方法决定,如果发送消息的方法是运行在主线程中,此方法就会运行在主线程中,如果...子线程,此方法就会运行在子线程中
    public void onEvent(EventMsg msg){
        String str = msg.getMsg();
        Log.i("TAG","onEvent---"+"str:"+str+"----thread:"+Thread.currentThread().getName());
    }

    //无论发送消息的方法是运行在哪个线程中,此方法都是运行在子线程中的
    //如果发送消息的方法是运行在子线程中,此方法和发送消息的方法公用一个线程
    //如果发送消息的方法是运行在主线程中,会单独开启线程
    public void onEventBackgroundThread(EventMsg msg){
        String str = msg.getMsg();
        Log.i("TAG","onEventBackgroundThread---"+"str:"+str+"----thread:"+Thread.currentThread().getName());
    }

    //无论发送消息的方法是运行在哪个线程中,此方法都是运行在子线程中的,另开启一个子线程
    public void onEventAsync(EventMsg msg){
        String str = msg.getMsg();
        Log.i("TAG","onEventAsync--"+"str:"+str+"----thread:"+Thread.currentThread().getName());
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //反注册EventBus
        EventBus.getDefault().unregister(this);
    }
}

<pre name="code" class="java">/**
 * Created by pk on 16/5/10.
 * 类名随便取
 */
public class EventMsg {
    private String msg;

    public EventMsg(String msg) {
        this.msg = msg;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;

import de.greenrobot.event.EventBus;

public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
    }

    //点击Button传递数据
    public void clickBtn(View view) {
        //发送消息
        EventBus.getDefault().post(new EventMsg("我是Msg"));
        Log.i("TAG",Thread.currentThread().getName()+"------SecondActivity-----");
        finish();
    }
}

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="跳转"
        android:onClick="clickBtn"/>
</RelativeLayout>
 
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
 >

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="clickBtn"/>
</RelativeLayout>



 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
EventBus是一个开源的发布-订阅式的事件总线库。下面是一个简单EventBus使用的代码示例: 1. 首先,需要在项目中引入EventBus库。可以通过Gradle或Maven等构建工具添加依赖。 2. 定义事件类。创建一个Java类,作为事件的载体,可以包含需要传递的数据。 ```java public class MessageEvent { private String message; public MessageEvent(String message) { this.message = message; } public String getMessage() { return message; } } ``` 3. 注册事件订阅者。在需要接收事件的地方注册订阅者,并指定订阅的事件类型。例如,在Activity的onCreate方法中注册: ```java @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EventBus.getDefault().register(this); } ``` 4. 定义事件订阅者的处理方法。在订阅者中定义处理事件的方法,方法需要加上@Subscribe注解,并指定事件类型。 ```java @Subscribe public void onMessageEvent(MessageEvent event) { String message = event.getMessage(); // 处理事件 } ``` 5. 发布事件。在需要发送事件的地方,创建一个事件对象,并使用EventBus的post方法发布事件。 ```java EventBus.getDefault().post(new MessageEvent("Hello EventBus!")); ``` 6. 取消事件订阅。在不需要接收事件的地方,取消注册订阅者。例如,在Activity的onDestroy方法中取消注册: ```java @Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); } ``` 以上就是一个简单EventBus使用代码示例。通过事件的发布和订阅,可以实现不同组件之间的解耦,方便数据传递和通信。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值