android常见传值
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常见传值相关推荐
- Android 常见adb命令
Android 常见adb命令 by:授客 QQ:1033553122 1. 查看所有已链接的设备 命令: adb devices 例: C:\Users\laiyu>adb device ...
- android mdpi对应哪一个屏幕,android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )及屏幕适配...
1 Android手机目前常见的分辨率 1.1 手机常见分辨率: 4:3 VGA 640*480 (Video Graphics Array) QVGA 320*240 (Quarter V ...
- android控件使用大全,Android常见控件使用详解
本文实例为大家分享了六种Android常见控件的使用方法,供大家参考,具体内容如下 1.TextView 主要用于界面上显示一段文本信息 2.Button 用于和用户交互的一个按钮控件 //为Butt ...
- Android常见漏洞
Android常见漏洞 漏洞名称: Log敏感信息泄露 漏洞描述: 程序运行期间打印了用户的敏感信息,造成泄露 修改建议: 建议禁止隐私信息的log 漏洞名称: web https校验错误忽略漏洞 漏 ...
- Android常见的内存泄漏分析
内存泄漏原因 当应用不需要在使用某个对象时候,忘记释放为其分配的内存,导致该对象仍然保持被引用状态(当对象拥有强引用,GC无法回收),从而导致内存泄漏. 常见的内存泄漏源头 泄漏的源头有很多,有开源的 ...
- android常见布局整理
android 常见的布局小结 布局风格 1先定主基调 :线性布局垂直 2从最基础最简单入手把大模块分解为 一个个小模块来写 <?xml version="1.0" enco ...
- Android面试必过——Android常见的问题
Android常见的问题 标签(空格分隔): 移动开发 常见算法问题的 Java 实现 资料可见 算法介绍可见 算法是很多公司面试必须,国内 BAT 基本面试中都会有,尤以百度为盛. 常见设计模式的 ...
- Android常见的问题
转载:http://stane.sinaapp.com/android面试必过-android常见的问题/ 水平有限,有错误请提出来. Android常见的问题 标签(空格分隔): 移动开发 常见算法 ...
- Android常见设计模式——代理模式(Proxy Pattern)(二)
文章目录 1. 前言 2. 远程代理(Remote Proxy) 3. 后记 1. 前言 在上篇Android常见设计模式--代理模式(Proxy Pattern)中基本上知道了什么是代理模式,以及对 ...
最新文章
- PYTHON_DACORATOR
- tf.Variable()、tf.get_variable()
- 【转】使用Navicat for Oracle新建表空间、用户及权限赋予
- 自动化测试工具selenium python_Selenium自动化测试工具使用方法汇总
- VSCode打开底部状态栏
- 【狂神】JavaScript笔记
- Python Traceback (most recent call last)【StopIteration】
- 搜湖州师范学院C语言题库,湖州师范学院文件-20210402175834.doc-原创力文档
- 联想拯救者19款原厂系统镜像
- [原创]中国大陆民谣盘点8 曹崴《情歌唱晚》
- 不用action提交表单——JS实现
- SMSS打开界面闪退的解决方案
- Java实战项目之人力资源管理系统【源码+课后指导】_Java毕业设计/计算机毕业设计
- 大数据 BigData
- 抛物线交点式公式_抛物线所有公式
- 单片机缩略词及标志位完整英文名称整理
- Qt之创建桌面和开始菜单快捷方式
- 红外线气体分析仪的工作原理
- Springboot福佳生活超市进销存管理系统 毕业设计-附源码261620
- 诺基亚(Nokia)推出了其近20年来的首款电脑产品
热门文章
- jQuery简单插件开发
- 台达b2伺服modbus通讯_台达C2000促进油毛毡切割包装机的发展
- 在Git中找到破坏测试的提交
- 使用ML.Net和C#进行机器学习
- matlab求最大公倍数_小学数学最大公因数最小公倍数练习
- android4.4 ssl版本查看,OkHttp在4.4及以下不支持TLS协议的解决方法
- mysql数据库 uft8_unicode_ci是utf8吗_MysQL数据库中utf8_unicode_ci与utf8_general_ci的区别
- java 栈和队列实现迷宫代码_使用两个队列实现一个栈
- ubuntu mysql ftp_Ubuntu服务器安装ftp服务和MySQL数据库配置的一些记录
- java jsonfield_fastjson使用-- @JSONField使用(转)