EVENTBUS的使用
https://github.com/greenrobot/EventBus

EventBus in 3 steps
Define events:

public static class MessageEvent { /* Additional fields if needed */ }
Prepare subscribers: Declare and annotate your subscribing method, optionally specify a thread mode:

@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(MessageEvent event) {/* Do something */};
Register and unregister your subscriber. For example on Android, activities and fragments should usually register according to their life cycle:

@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}

@Override
public void onStop() {
super.onStop();
EventBus.getDefault().unregister(this);
}
Post events:

EventBus.getDefault().post(new MessageEvent());

注意点 注销应该写在onDestroy方法中,在onStart()方法中最好加入判断是否之前已经注册了事件

注册事件中,几个字段的含义

链接:https://www.jianshu.com/p/a040955194fc

在上面的例子中,我们再注解@Subscribe(threadMode = ThreadMode.MAIN)中使用了ThreadMode.MAIN这个模式,表示该函数在主线程即UI线程中执行,实际上EventBus总共有四种线程模式,分别是:

ThreadMode.MAIN:表示无论事件是在哪个线程发布出来的,该事件订阅方法onEvent都会在UI线程中执行,这个在Android中是非常有用的,因为在Android中只能在UI线程中更新UI,所有在此模式下的方法是不能执行耗时操作的。
ThreadMode.POSTING:表示事件在哪个线程中发布出来的,事件订阅函数onEvent就会在这个线程中运行,也就是说发布事件和接收事件在同一个线程。使用这个方法时,在onEvent方法中不能执行耗时操作,如果执行耗时操作容易导致事件分发延迟。
ThreadMode.BACKGROUND:表示如果事件在UI线程中发布出来的,那么订阅函数onEvent就会在子线程中运行,如果事件本来就是在子线程中发布出来的,那么订阅函数直接在该子线程中执行。
ThreadMode.AYSNC:使用这个模式的订阅函数,那么无论事件在哪个线程发布,都会创建新的子线程来执行订阅函数。

如果用第三和第四个字段,而且再这个方法内部更新主线程的话会报这样的错误

  java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

如果先发送后写的注册代码,可以用粘性发送
EventBus.getDefault().postSticky(new MessageEvent(“goodEvening”));
意思是如果接受者没有收到消息,则一直发送到收到为止

文件存储工具类
https://blog.csdn.net/csdnzouqi/article/details/75333266

参考链接
https://www.jianshu.com/p/4340ea609ca1

源码下载
https://download.csdn.net/download/qq_26296197/10888522

android常见传值相关推荐

  1. Android 常见adb命令

    Android 常见adb命令 by:授客 QQ:1033553122 1.  查看所有已链接的设备 命令: adb devices   例: C:\Users\laiyu>adb device ...

  2. android mdpi对应哪一个屏幕,android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )及屏幕适配...

    1 Android手机目前常见的分辨率 1.1 手机常见分辨率: 4:3 VGA     640*480 (Video Graphics Array) QVGA  320*240 (Quarter V ...

  3. android控件使用大全,Android常见控件使用详解

    本文实例为大家分享了六种Android常见控件的使用方法,供大家参考,具体内容如下 1.TextView 主要用于界面上显示一段文本信息 2.Button 用于和用户交互的一个按钮控件 //为Butt ...

  4. Android常见漏洞

    Android常见漏洞 漏洞名称: Log敏感信息泄露 漏洞描述: 程序运行期间打印了用户的敏感信息,造成泄露 修改建议: 建议禁止隐私信息的log 漏洞名称: web https校验错误忽略漏洞 漏 ...

  5. Android常见的内存泄漏分析

    内存泄漏原因 当应用不需要在使用某个对象时候,忘记释放为其分配的内存,导致该对象仍然保持被引用状态(当对象拥有强引用,GC无法回收),从而导致内存泄漏. 常见的内存泄漏源头 泄漏的源头有很多,有开源的 ...

  6. android常见布局整理

    android 常见的布局小结 布局风格 1先定主基调 :线性布局垂直 2从最基础最简单入手把大模块分解为 一个个小模块来写 <?xml version="1.0" enco ...

  7. Android面试必过——Android常见的问题

    Android常见的问题 标签(空格分隔): 移动开发 常见算法问题的 Java 实现 资料可见 算法介绍可见 算法是很多公司面试必须,国内 BAT 基本面试中都会有,尤以百度为盛. 常见设计模式的 ...

  8. Android常见的问题

    转载:http://stane.sinaapp.com/android面试必过-android常见的问题/ 水平有限,有错误请提出来. Android常见的问题 标签(空格分隔): 移动开发 常见算法 ...

  9. Android常见设计模式——代理模式(Proxy Pattern)(二)

    文章目录 1. 前言 2. 远程代理(Remote Proxy) 3. 后记 1. 前言 在上篇Android常见设计模式--代理模式(Proxy Pattern)中基本上知道了什么是代理模式,以及对 ...

最新文章

  1. PYTHON_DACORATOR
  2. tf.Variable()、tf.get_variable()
  3. 【转】使用Navicat for Oracle新建表空间、用户及权限赋予
  4. 自动化测试工具selenium python_Selenium自动化测试工具使用方法汇总
  5. VSCode打开底部状态栏
  6. 【狂神】JavaScript笔记
  7. Python Traceback (most recent call last)【StopIteration】
  8. 搜湖州师范学院C语言题库,湖州师范学院文件-20210402175834.doc-原创力文档
  9. 联想拯救者19款原厂系统镜像
  10. [原创]中国大陆民谣盘点8 曹崴《情歌唱晚》
  11. 不用action提交表单——JS实现
  12. SMSS打开界面闪退的解决方案
  13. Java实战项目之人力资源管理系统【源码+课后指导】_Java毕业设计/计算机毕业设计
  14. 大数据 BigData
  15. 抛物线交点式公式_抛物线所有公式
  16. 单片机缩略词及标志位完整英文名称整理
  17. Qt之创建桌面和开始菜单快捷方式
  18. 红外线气体分析仪的工作原理
  19. Springboot福佳生活超市进销存管理系统 毕业设计-附源码261620
  20. 诺基亚(Nokia)推出了其近20年来的首款电脑产品

热门文章

  1. jQuery简单插件开发
  2. 台达b2伺服modbus通讯_台达C2000促进油毛毡切割包装机的发展
  3. 在Git中找到破坏测试的提交
  4. 使用ML.Net和C#进行机器学习
  5. matlab求最大公倍数_小学数学最大公因数最小公倍数练习
  6. android4.4 ssl版本查看,OkHttp在4.4及以下不支持TLS协议的解决方法
  7. mysql数据库 uft8_unicode_ci是utf8吗_MysQL数据库中utf8_unicode_ci与utf8_general_ci的区别
  8. java 栈和队列实现迷宫代码_使用两个队列实现一个栈
  9. ubuntu mysql ftp_Ubuntu服务器安装ftp服务和MySQL数据库配置的一些记录
  10. java jsonfield_fastjson使用-- @JSONField使用(转)