Android 效率开发之EventBus新使用方法
2015-11-08 16:13
435 查看
最近学习EventBus的使用时发现关于EventBus的使用好多还都是以前的使用方法,然而EventBus的使用早已不同了,下面链接的这篇文章中介绍了EventBus的新用法,可以作为参考与借鉴 Android–>EventBus 3.0新版使用说明(及其使用方法) ,今天写的小Demo作为分享。
2、如果使用的是AndroidStudio:直接搜索即可。
3、EventBus的代码编写可以分为三部分来看
(1)Message类,用作消息传递时的传递对象
(2)Receive类,用于接收EventBus发送的对象,并进行相关操作
(3)Post类,用于发送EventBus的类
ps:对EventBus的理解最好的还是下面这张图:
4、Demo
(1)Message类
(2)Receiver类
该类用于接收EventBus发的消息,首先是需要在onCreate()和onDestroy()方法中进行注册与反注册,之后是onUserEvent()方法用于消息处理的相关操作,注意 @Subscribe()语句不能丢失。
(3)Post类
该类主要用于EventBus通过post()方法发送消息。
(4)运行效果
EventBus介绍
EventBus 可以简单的理解为传递消息,EventBus实现了对程序组件的解耦,使得消息传递更加方便,比如我们需要通过Intent来进行数据之类的 传递,现在可以直接通过EventBus 的post方法传递。EventBus的使用
1、如果使用的是Eclipse:需要从GitHub上下载EventBus(https://github.com/greenrobot/EventBus)`2、如果使用的是AndroidStudio:直接搜索即可。
3、EventBus的代码编写可以分为三部分来看
(1)Message类,用作消息传递时的传递对象
(2)Receive类,用于接收EventBus发送的对象,并进行相关操作
(3)Post类,用于发送EventBus的类
ps:对EventBus的理解最好的还是下面这张图:
4、Demo
(1)Message类
public class MessageEvent { private String msg; public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } }
(2)Receiver类
该类用于接收EventBus发的消息,首先是需要在onCreate()和onDestroy()方法中进行注册与反注册,之后是onUserEvent()方法用于消息处理的相关操作,注意 @Subscribe()语句不能丢失。
public class MainActivity extends AppCompatActivity { private Button mButtonClick; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //注册EventBus EventBus.getDefault().register(this); mButtonClick= (Button) findViewById(R.id.button_click); mButtonClick.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent=new Intent(getApplicationContext(),MyService.class); startService(intent); } }); } //在发送者调用post方法后将会执行下面的方法 @Subscribe(threadMode = ThreadMode.MainThread) //在ui线程执行 public void onUserEvent(MessageEvent event) { Log.d("",""+event.getMsg()); mButtonClick.setText(event.getMsg() +""); } @Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this);//反注册EventBus } }
(3)Post类
该类主要用于EventBus通过post()方法发送消息。
public class MyService extends Service { private int i=0; @Override public void onCreate() { super.onCreate(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { new Thread(new Runnable() { @Override public void run() { MessageEvent event=new MessageEvent(); event.setMsg(""+i); EventBus.getDefault().post(event); i++; try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } }).start(); return super.onStartCommand(intent, flags, startId); } @Nullable @Override public IBinder onBind(Intent intent) { return null; } }
(4)运行效果
相关文章推荐
- android视图的一些总结
- Android读书笔记-----自定义View(1)原理
- Android中的View
- Android SlideMenu基本属性介绍
- 在Windows下搭建Android开发环境
- android应用1之计算器
- 疗伤之设计模式
- Android M 部分API变动研究
- 解决win10 下android studio terminal无法输入的问题
- Android View的onTouchEvent和OnTouch区别
- IntentService学习笔记
- Android Activity与Service的交互方式
- Android中常用对话框
- Android使用限定符
- MTP in Android
- android多线程断点下载-带进度条和百分比进度显示
- Win7 PC无法识别android手机 / adb interface有黄色感叹号
- Android Studio NDK jni 开发
- Android根据布局文件动态添加控件
- 获取Android屏幕尺寸与密度