工作内容:
1.EventBus的基础使用。
2.配置环信及时通讯(易出错的地方)。
注意:执行环信请求时最好开子线程或在线程池中操作操作(需转到Ui线程来做View的处理)最好发一个handler来处理界面【接收消息时如果不转到UI线程来处理会消息延迟,需要点下界面才会显示出消息】
3.网络请求过程中退出了该Activity报错的处理办法。
学习分享:
一、EventBus的使用步骤
1.引入EventBus的依赖(android studio)github链接
2.二步搞定【建议用于MVP中的 Model —— Presenter传递桥梁】
前提准备:定义一个ModelEvent类(用于传递信息用)
第一步:Model层发送
EventBus eventBus = EventBus.getDefault()//初始化[可以放于构造函数中,需先于发送]
在需要发送消息的地方(会跳转到接收的地方执行)
eventBus.post(new ModelEvent())//可以先将数据放入ModelEvent中再传送
第二步:Presenter层接收Model发送过来的ModelEvent对象
注册EventBus
EventBus.getDefault().register(this)//这里的this表示当前类(常在构造函数中注册EventBus——必须先于调用/接收消息的方法执行)
定义接收方法
/**
* 调用此方法前需先注册的EventBus
* @param event 这里的参数类型是什么,就接收什么类型的数据
* ThreadMode.BACKGROUND 表示在后台线程接收“消息”
* ThreadMode.MAIN 表示在前台/UI线程接收“消息”
* ThreadMode.ASYNC 表示异步接收“消息”[测试结果是属于:后台线程中执行]
*
* 这里的注解是接收方法的一种写法(简单)也可以参照github中的示例
*/
@Subscribe(threadMode = ThreadMode.MAIN)
public void fail(ModelEvent event){
LogTool.e("Event_fail");
}
定义注销EventBus
EventBus.getDefault().unregister(this)//这里的this表示当前类(常在构造函数中注册EventBus——必须先于调用/接收消息的方法执行)</span>
注意:
1.在发送方的EventBus对象需与接收方的对象是同一个(这里使用的一个getDefault,也可以使用一个静态对象来发送和接收)
2.初始化EventBus对象——post()—[发送到接收方]—注册——接收——取消注册
二、配置环信及时通讯(易出错的地方)。[这里使用了环信exampll/easeui模块]
1.首先是,下载了环信的SDK,打开开发者文档(这里以环信及时通讯云V3.0为例子)
2.新开一个项目(工具:Android Studio)直接使用example中的easeui模块来开发及时通讯(【添加进项目】如下图)
3.添加依赖(将easeui添加成app模块的依赖)
注意:很多情况这里就开始报错,一看错误提示几百上千个错误【也有可能会在运行时出错,一直运行不起】
翻到错误的最下面,常见如下:
1.刚刚开始我觉得可能是要求的版本问题,结果一看人家要求的最底版本是9,适配版本是20(可以说现在最少都要高于这个配置了)——这里没错
2.在网上查了下说是导入的jar包有重复,翻看了一遍又一遍——无果
3.最后尝试着将easeui中的support-v4.jar删除之后再导入一个v4包发现可以运行了
注意:导包/添加依赖时需要注意你导入的jar包的SDK版本(一般在jar文件名的末尾)与你现在使用的SDK版本是否相同
三、网络请求过程中退出了该Activity报错的处理办法。
绑定视图和解绑视图(view)在onDestory时解绑presenter