概述
Android笔记
——EventBus
【若对该知识点有更多想了解的,欢迎私信博主~~】
依赖框架:EventBus
一:优势及作用
- 分离事件发送者和接收者
- 在Activity、Fragment和后台线程中也可以方便使用
- 高度解耦,解决了生命周期的问题
- 代码更加简洁
二:EventBus的配置
-
分build.gradle中添加(注入依赖)
dependencies { implementation 'org.greenrobot:eventbus:3.1.1' }
三:使用
-
定义一个用于事件类
public class UserEvent { private User user; public UserEvent(User user) { this.user = user; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } }
-
在接收的地方(此处为Activity)注册EventBus
//MainActivity @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //绑定控件 initView(); //为该Activity注册EventBus EventBus.getDefault().register(this); }
-
定义一个方法用来接收信息
//MainActivity //参数1:四种线程模型 //参数2:黏性事件,事件处理函数会在Activity UI创建之前,利用黏性事件,可以在创建完UI后再运行一次 //参数3:优先级,例如有两个OnEvent与threadMode相同的Activity,优先级越高,越早执行,默认为0。 //因为事件有继续分发性,若是不想让以后的Activity也接收,可以利用优先级 //EventBus.getDefault().cancelEventDelivery(message);来停止 @Subscribe(threadMode = ThreadMode.POSTING, sticky = true) public void OnEvent(UserEvent userEvent) { Log.e("aaa","1.UserEvent"); tvFirst.setText(userEvent.getUser().getId()); }
线程模型 说明 POSTING 默认,表示事件处理函数的线程与事件发布的线程为同一个 MAIN 表示事件处理函数的线程在主线程(UI)线程中,不能进行耗时操作 BACKGROUND 表示事件处理函数的线程在后台线程中,不能进行UI操作
如果发布事件在主线程里,那事件处理函数则在后台开新线程
如果发布事件在后台线程里,则事件处理函数在同一个ASYNC 表示无论事件发布的线程在哪一个,事件处理函数的线程都会新建一个子线程,不能进行UI -
在需要发布的地方(此处为SecondActivity)发布事件
//post()--普通发布事件,postSticky()--发布黏性事件接收的信息 //由此看出,不仅可以发布String、Boolean等普通值,还可以发布对象,所有注册EventBus都可 //以接收 EventBus.getDefault().postSticky(new UserEvent(user));
-
销毁(可以不写)
@Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); }
参考文档:
- https://www.jianshu.com/p/e7d5c7bda783
- https://github.com/greenrobot/EventBus
最后
以上就是潇洒樱桃为你收集整理的【Android开发--新手必看篇】依赖框架EventBus的使用Android笔记的全部内容,希望文章能够帮你解决【Android开发--新手必看篇】依赖框架EventBus的使用Android笔记所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复