EventBus事件总线库

本文介绍了如何使用EventBus库实现Android组件间的事件驱动通信。通过定义事件类、注册订阅者和发布事件,实现了在不同Activity间传递消息的功能。示例包括EventAActivity接收并显示来自EventBActivity的消息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GIthub官方地址:

https://github.com/greenrobot/EventBus

使用步骤

EventBus in 3 steps
  1. Define events:
    public class MessageEvent { /* Additional fields if needed */ }

  2. Prepare subscribers
    Register your subscriber (in your onCreate or in a constructor):
    eventBus.register(this);

    Declare your subscribing method:
    @Subscribe
    public void onEvent(AnyEventType event) {/* Do something */};

  3. Post events:
    eventBus.post(event);
   Gradle中添加一下代码:
 compile 'org.greenrobot:eventbus:3.0.0'
    

Maven:

<dependency>
    <groupId>org.greenrobot</groupId>
    <artifactId>eventbus</artifactId>
    <version>3.0.0</version>
</dependency>
测试如下:

public class EventAActivity extends Activity implements View.OnClickListener {

    private Button mButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_event_a);
        mButton = (Button) findViewById(R.id.event_button);
        EventBus.getDefault().register(this);
        mButton.setOnClickListener(this);
    }

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

    @Subscribe
    public void onEventMainThread(MessageEvent event) {
        Toast.makeText(EventAActivity.this, event.message, Toast.LENGTH_SHORT).show();
    }


    @Override
    public void onClick(View v) {
        if (v.getId() == R.id.event_button) {
            Intent intent = new Intent(this, EventBActivity.class);
            startActivity(intent);

        }
    }
}

另一个Activity
public class EventBActivity extends Activity implements View.OnClickListener {

    private Button mButton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_event_b);
//        EventBus.getDefault().register(this);
        mButton = (Button) findViewById(R.id.event_b_button);
        mButton.setOnClickListener(this);
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
//        EventBus.getDefault().unregister(this);
    }

    @Override
    public void onClick(View v) {
        EventBus.getDefault().post(new MessageEvent("Hello everyone!"));
    }
}


   当在BActivity中点击发送按钮的时候,可以把消息传递到AActivity中。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

le4

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值