网站首页 > 技术文章 正文
有时我们需要在其他非UI线程中更新我们的UI,那么我今天给大家介绍的使用EventBus来更新,这个使用起来非常的简单。如果对我的文章感兴趣,欢迎订阅我的头条号:一点热,yeehot.com。
我们知道在直播中,一般通过socket连接,然后实时的返回数据,这些一般都是我们单独的子线程,这个是无法对我们的UI界面进行更新的,我们要更新必须回到UI线程。
一般来说,我们可以使用handler来实现更新UI
比如是这样
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg){
String s = String.valueOf(msg.what);
TextView tv = (TextView)findViewById(R.id.info);
tv.setText("www.yeehot.com");
}
};
new Thread(new Runnable(){
@Override public void run() {
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
}).start;
此外我们也可以使用Activity.runOnUiThread(Runnable)来实现更新UI
不过不是我们今天的重点,我们要说的重点就是使用EventBus来更新。
那么在Android如何使用它?
1、首先我们使用gradle来添加如下代码:
compile 'org.greenrobot:eventbus:3.0.0'
2、添加消息事件,用于接收数据的类型
public class LiveMessageEvent {
public final String username;
public final String info;
public LiveMessageEvent(String username,String info){
this.username= username;
this.info= info;
}
}
3、注解在ui线程执行
@Subscribe(threadMode = ThreadMode.MAIN)
publicvoid onLiveMessageEvent(LiveMessageEvent event){
Toast.makeText(getActivity(), event.username+event.info, Toast.LENGTH_SHORT).show();
}
4、在启动的时候注册EventBus
@Override
publicvoid onStart(){
super.onStart();
EventBus.getDefault().register(this);
}
5、在结束的时候卸载EventBus
@Override
publicvoid onStop(){
EventBus.getDefault().unregister(this);
super.onStop();
}
6、在我们的直播收到信息的子线程调用这个发送事件的方法。
EventBus.getDefault().post(new LiveMessageEvent("yeehot","发表了文章"));
今天的课程就说到这里,欢迎继续关注我的头条号:一点热,yeehot.com
欢迎大家收藏与转发,如果转载到其它网站,请与我联系.
猜你喜欢
- 2025-07-16 四叔排列三第2021089期:组选034之后615三码最冷
- 2025-07-16 美媒:五角大楼泄密文件或源于游戏玩家聊天室
- 2025-07-16 聊天室的回春?词觅通过词语的搜索轨迹创建聊天,匹配兴趣相同的人
- 2025-07-16 五角大楼军机泄露疑似起源聊天室!传播一个月才引起官员警觉
- 2025-07-16 视频节目:犯罪聊天室——暗网杀人案
- 2025-07-16 300多个女孩的私密照,被传到色情聊天室,最高浏览人数达680万
- 2025-07-16 美军泄密文件疑似起源于游戏聊天室,传播1个多月才引起官方警觉
- 2025-07-16 遗忘的第十样:当聊天室成了时间的密码
- 2025-07-16 探探上认识,十几天就打得火热……保赚不赔,现在都没了
- 2025-07-16 网络卧底调查|男友把她的私照发进了色情聊天室
- 最近发表
- 标签列表
-
- axure 注册码 (25)
- mutex_lock (30)
- oracleclient (27)
- nfs (25)
- springbatch (28)
- oracle数据库备份 (25)
- dir (26)
- connectionstring属性尚未初始化 (23)
- output (32)
- panel滚动条 (28)
- centos 5 4 (23)
- sql学习 (33)
- c 数组 (33)
- pascal语言教程 (23)
- ppt 教程 (35)
- java7 (24)
- 自适应网站制作 (32)
- server服务自动停止 (25)
- 超链接去掉下划线 (34)
- 什么是堆栈 (22)
- map entry (25)
- ubuntu装qq (25)
- outputstreamwriter (26)
- fill_parent (22)
- mssqlserver jar (30)