博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android为TV端助力 EventBus.getDefault()开源框架
阅读量:4636 次
发布时间:2019-06-09

本文共 1344 字,大约阅读时间需要 4 分钟。

在onCreate里面执行 EventBus.getDefault().register(this);意思是让EventBus扫描当前类,把所有onEvent开头的方法记录下来,如何记录呢?使用Map,Key为方法的参数类型,Value中包含我们的方法。

这样在onCreate执行完成以后,我们的onEventMainThread就已经以键值对的方式被存储到EventBus中了。

然后当子线程执行完毕,调用EventBus.getDefault().post(new ItemListEvent(Item.ITEMS))时,EventBus会根据post中实参的类型,去Map中查找对于的方法,于是找到了我们的onEventMainThread,最终调用反射去执行我们的方法。

现在应该明白了,整个运行的流程了;那么没有接口却能发生回调应该也能解释了。

最后在onstop()反注册;

转载在哥,感谢他!附上他的博客地址 

EventBus的ThreadMode

EventBus包含4个ThreadMode:PostThread,MainThread,BackgroundThread,Async

MainThread我们已经不陌生了;我们已经使用过。

具体的用法,极其简单,方法名为:onEventPostThread, onEventMainThread,onEventBackgroundThread,onEventAsync即可

具体什么区别呢?

onEventMainThread代表这个方法会在UI线程执行

onEventPostThread代表这个方法会在当前发布事件的线程执行

BackgroundThread这个方法,如果在非UI线程发布的事件,则直接执行,和发布在同一个线程中。如果在UI线程发布的事件,则加入后台任务队列,使用线程池一个接一个调用。

Async 加入后台任务队列,使用线程池调用,注意没有BackgroundThread中的一个接一个。

如图

  1. public class SampleComponent extends Fragment  
  2. {  
  3.   
  4.     @Override  
  5.     public void onCreate(Bundle savedInstanceState)  
  6.     {  
  7.         super.onCreate(savedInstanceState);  
  8.         EventBus.getDefault().register(this);  
  9.     }  
  10.   
  11.     public void onEventMainThread(param)  
  12.     {  
  13.     }  
  14.       
  15.     public void onEventPostThread(param)  
  16.     {  
  17.           
  18.     }  
  19.       
  20.     public void onEventBackgroundThread(param)  
  21.     {  
  22.           
  23.     }  
  24.       
  25.     public void onEventAsync(param)  
  26.     {  
  27.           
  28.     }  
  29.       
  30.     @Override  
  31.     public void onDestroy()  
  32.     {  
  33.         super.onDestroy();  
  34.         EventBus.getDefault().unregister(this);  
  35.     }  
  36.       
  37. }  

转载于:https://www.cnblogs.com/xiaoxiaing/p/6434993.html

你可能感兴趣的文章
备忘录
查看>>
科协第三期
查看>>
软件工程个人作业02
查看>>
寒假刷题之5——竹简文
查看>>
Android JSON、GSON、FastJson的封装与解析
查看>>
Luogu P1340 兽径管理
查看>>
pip install 问题
查看>>
Vagrant 入门 - 配置
查看>>
Luogu P1315 观光公交
查看>>
vue-router导航守卫,限制页面访问权限
查看>>
UNDERSTANDING CALLBACK FUNCTIONS IN JAVASCRIPT
查看>>
玩法详细说明文档
查看>>
Archlinux GNOME 3 操作习惯的变更
查看>>
visual studio 2005 常用按键
查看>>
2019 Multi-University Training Contest 1 - 1012 - NTT
查看>>
谭浩强C程序设计(第四版)例题中的代码优化
查看>>
浏览器调试淘宝首页看到有趣的招聘信息
查看>>
ASP.NET Identity “角色-权限”管理 4
查看>>
[转][译]ASP.NET MVC 4 移动特性
查看>>
SOC CPU
查看>>