EventBus 3.0的用法 Demo
来源:互联网 发布:希拉里 国务卿知乎 编辑:程序博客网 时间:2024/04/20 16:46
啥是 EventBus ,大家也都知道了,否则也不会跑来用。现在都更新到3.0了,我也是最近才去使用它,以前知道,但是毕竟没去实际运用,最近比较闲,也就来跳跳坑了。
首先,引用相关jar包依赖(额,这里还是用的Eclipse…用AS的自行跳过,直接添加一句依赖代码就好。)
考虑周到的我,直接贴出jar包下载地址。
http://download.csdn.net/detail/pmqiujun/9625605
由于只是一个小Demo,简单的测试一下,根据传入不同的参数,而让不同的处理函数去处理相关业务。
还是直接上代码吧,实在太简单,没得BB了。
Activity 1 :
package com.adj.eventsbusdemo;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;import de.greenrobot.event.EventBus;import de.greenrobot.event.Subscribe;import de.greenrobot.event.ThreadMode;public class MainActivity extends Activity implements OnClickListener { private TextView tv_msg_from_a2; private Button bt_goto_a2; private static String TAG = ""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TAG = this.getClass().getSimpleName(); initViews(); } private void initViews() { tv_msg_from_a2 = (TextView) findViewById(R.id.tv_msg_from_a2); bt_goto_a2 = (Button) findViewById(R.id.bt_goto_a2); bt_goto_a2.setOnClickListener(this); EventBus.getDefault().register(this); } /* * 选择处理方法的时候根据 post方法的参数类型 和 处理方法的参数类型匹配 * * post 的是 String 类型的 */ @Subscribe(threadMode = ThreadMode.MainThread) public void helloEventBusString(String message) { if (!message.isEmpty()) { tv_msg_from_a2.setText("Activity 2 发送返回的是String类型:" + message); } else { tv_msg_from_a2.setText("Activity 发送返回的 String 数据信息为空!" + message); Log.e(TAG, "Activity 发送返回的 String 数据信息为空!"); } } /* * 选择处理方法的时候根据 post方法的参数类型 和 处理方法的参数类型匹配 * * post 的是 Integer 类型的 (请注意:只能用 Integer,不能用 int ) */ @Subscribe(threadMode = ThreadMode.MainThread) public void helloEventBusInt(Integer mint) { if ("null".equals(String.valueOf(mint))) { tv_msg_from_a2.setText("Activity 发送返回的 Integer 数据信息为空!"); Log.e(TAG, "Activity 发送返回的 Integer 数据信息为空!"); } else { tv_msg_from_a2.setText("Activity 2 发送返回的是Integer 类型:" + mint); } } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); EventBus.getDefault().unregister(this); } @Override public void onClick(View v) { if (v.getId() == R.id.bt_goto_a2) { startActivity(new Intent(MainActivity.this, MainActivity2.class)); } }}
Activity 2 :
package com.adj.eventsbusdemo;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import de.greenrobot.event.EventBus;public class MainActivity2 extends Activity implements OnClickListener { private Button bt_send_msg_to_a1; private Button bt_send_int_msg_to_a1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity2); initViews(); } private void initViews() { bt_send_msg_to_a1 = (Button) findViewById(R.id.bt_send_msg_to_a1); bt_send_int_msg_to_a1 = (Button) findViewById(R.id.bt_send_int_msg_to_a1); bt_send_int_msg_to_a1.setOnClickListener(this); bt_send_msg_to_a1.setOnClickListener(this); } public void onClick(View v) { if (v.getId() == R.id.bt_send_msg_to_a1) { String msg = "Andjun"; EventBus.getDefault().post(msg); this.finish(); } if (v.getId() == R.id.bt_send_int_msg_to_a1) { Integer mint = 333; EventBus.getDefault().post(mint); this.finish(); } }}
额,确实就是这么简单而已,主要是3.0的这个用法太简便了,响应又快,注册一下,传不同参数,甚至是封装好的对象,简直完美~
最后上个效果图啥的吧,显得正式一点嘛
坑坑坑坑坑
相比也应该看到我代码里面注释的部分,在使用 int 的时候,智能使用 Integer 类型,不能使用不封装的 int ,否则处理函数无法执行。。。,还好后来发现,我还以为又是电脑有毒了,不过我还没去看EcentsBus的源码,所以还不知道为什么不能直接用 int 。这个,日后再去了解吧。
总的来说,这个小测试Demo,还是十几分钟就能写完的,确实没啥,知识简单的熟悉一下它的用法,相比旧版本的,确实更加方便,真心推荐。比用Handler啥的都舒服得多。毕竟程序猿都很累的,能省功夫的时候先省省吧。O(∩_∩)O
这个只是在两个Activity之间的互相响应,处理,后期还要在Fragment,Services,什么的各种地方时间一下,毕竟实际开发中怎么可能全是只有Activity,对吧。任重而道远,骚年,继续刨坑吧……..
再会~~
- EventBus 3.0的用法 Demo
- EventBus的小小Demo
- EventBus 3.0的用法详解
- EventBus 3.0的用法详解
- EventBus 3.0的用法详解
- EventBus 3.0的用法详解
- EventBus 3.0的用法详解
- EventBus 3.0的用法详解
- EventBus的基本用法-3.0版本
- EventBus 3.0的用法详解(一)
- EventBus 3.0的用法详解(二)
- EventBus 3.0的用法详解(一)
- EventBus 3.0的用法详解(二)
- EventBus 3.0的用法详解(一)
- EventBus 3.0的用法详解(二)
- EventBus 3.0的用法详解(一)
- EventBus 3.0的用法详解(二)
- EventBus 的用法
- UITextAlignmentCenter' is deprecated: first deprecated in iOS 6.0 UITextAlignmentCenter
- 解决ListVeiw点击事件失效问题
- 如何使用爬虫采集58招聘信息
- GetWindowText()有关问题解答——VS2012
- mysqldump命令的用法
- EventBus 3.0的用法 Demo
- 项目实战-ProgressDialog
- Shiro用ehcache缓存session,关于JSESSIONID失效报错问题
- Verify Preorder Serialization of a Binary Tree
- 9*9乘法表
- 设计单片机日志系统
- Android 图片加载 Glide使用
- Linux上安装MySQL时出现不兼容的解决办法
- sqlserver 转为varchar类型