Android子线程更新主界面
学习什么的还是要真正的有应用,有需求才能在最短的时间里面牢牢掌握一项技术。
今天就是这样的,产品一个需求下来,十万火急啊。然后之前只稍稍接触过,只能硬着头皮上了。最后牢牢地掌握了最简单的Handler技术,闲话不多说了!
每一个做android的人都知道,android的内存可谓是存M存金啊!然后我们自然知道,而且Google在设计的时候也充分的考虑到了这一点,所以,我们的UIThread里面一般不做耗时的工作,比如请求网络,比如执行一些比较耗时的逻辑,比如比如加载图片,比如,哦,暂时只碰到过这些了。然后我们Google就给我们提供了好多吧多的方法来解决啦,像另起一个异步线程来请求网络啊像用UIThread里面调用子线程来更新啦,像使用RunOnUIThread方法啦,等等等等。然后其他高大的功能呢还暂时没掌握好,今天掌握了Handler这一个比较平民化的小功能。
众所周知,Handler可以结合子线程通过主线程来更新UI界面,然后就不会耗费系统太多的内存了。你如一定要去了解它内部的架构的话,你会在网上找到一大堆,涉及到Looper ,MessageQuenn,Message,以前在学习的时候就了解过,你要让我给你来说出个所以然的话我会将我背下来的相关东西背给你听!!!工作了就安安心心的掌握功能吧!!至于那些架构什么的要用到的时候好好弄一下就好了,背的都是拿来面试的!!
上代码!!
首先,我们在activity里面创建Handler对象:
private Handler handler1 = new Handler(){};
然后再新建线程:
Thread myThread=new Thread(new Runnable(){
@override
run(){ }
});
在线程里面写入一些设置和更改:
ProductListRequest param = new ProductListRequest();
param.setOrgId("1234");
param.setOrgName("上海浦东");
param.setPageSize(10);
param.setPageIndex(1);
ProductListResponse result = SyncApi.getProductList(param);
然后下一步就是创建Message对象,通过handler来获得,并给它赋一个标识。然后再将得到的要去改变UIThread的变量赋值给msg,再将它发送给handler;
Message msg=handler.obtainMessage();
msg.what=RESULT;//RESULT是在activity里面定义的一个全局的常量,值为1
msg.obj=result;
handler.sendMessage(msg);
然后再开启线程就可以了。最后再在Handler里面获取Message.并在Handler里面更新UI。
if(msg.what==SHENQINGXIANGQING)
{
GetPreApplyDetailResponse result=(GetPreApplyDetailResponse) msg.obj;
tvResult.setText(result.getBussinessCode());
}
然后整个代码如下:
private int RESULT=1; private Handler handler = new Handler(){
public void handleMessage(Message msg) {
if(msg.what==RESULT){
GetPreApplyDetailResponse result=(GetPreApplyDetailResponse) msg.obj;
tvResult.setText(result.getBussinessCode());
} Thread myThread=new Thread(new Runnable() { @Override
public void run() {
Message msg=handler1.obtainMessage();
msg.what=RESULT;
msg.obj=result;
handler1.sendMessage(msg);
huankuanqingqiuThread.start(); }
Android子线程更新主界面的更多相关文章
- Python+PyQT5的子线程更新UI界面的实例《新手必学》
今天小编就为大家分享一篇Python+PyQT5的子线程更新UI界面的实例,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧子线程里是不能更新UI界面的,在移动端方面.Android的U ...
- Android子线程更新UI成功
android子线程更新UI成功 今天在写demo的时候,在子线程中更新UI,发现更新成功,记录一下. protected void onCreate(Bundle savedInstanceStat ...
- Android子线程更新UI的方法总结
版权声明:本文为博主原创文章,转载请注明出处:https://i.cnblogs.com/EditPosts.aspx?postid=6121280 消息机制,对于Android开发者来说,应该是非常 ...
- android子线程更新UI
参考:https://www.cnblogs.com/joy99/p/6121280.html 子线程是不能直接更新UI的.Android实现View更新有两组方法,分别是invalidate和pos ...
- Android子线程更新UI主线程方法之Handler
背景: 我们开发应用程序的时候,处于线程安全的原因子线程通常是不能直接更新主线程(UI线程)中的UI元素的,那么在Android开发中有几种方法解决这个问题,其中方法之一就是利用Handler处理的. ...
- C#多线程应用:子线程更新主窗体控件的值(二)
在上篇文章中,我已经给大家列了一个在主线程中实现的方式,这篇文章来给大家说说使用Invoke的方式的例子: 对于不代理不太熟悉的朋友,建议先查查相关资料: 例子一: 在C#中,直接在子线程中对窗体上的 ...
- C#多线程应用:子线程更新主窗体控件的值(一)
我记得以前写过一次关于多线程的调用及更新的文章,由于时间比较久了,现在一时没找到.在做项目的时候,用到了多线程,还是有很多的同事在问多线程更新主窗体的事情,现在就这个事情做个记录. 说起多线程之间的更 ...
- Android 子线程更新UI 异常
众所周知,Android是不可以在子线程中直接更新UI的,需要借助Handler或者View.post(Runnable runnable)或者runOnUIThread(Runnable runna ...
- android 子线程更新UI
参考http://examples.javacodegeeks.com/android/core/os/handler/android-handler-example/package com.exam ...
随机推荐
- Slow Server? This is the Flow Chart You're Looking For--reference
Your high-powered server is suddenly running dog slow, and you need to remember the troubleshooting ...
- php include 与 require 起底[转]
转自 http://www.guangla.com/post/2014-01-24/40060857811 起因: 一朋友面试被问到,php的include和require的区别,这个可能是面试中出现 ...
- 教你写Jquery插件
最近很多网友说 jQuery插件是什么啊?怎么写的啊?我不会写啊? 一大堆的问题一时都不知道怎么回答他们,个人认为是网友们把问题复杂化了. 其实就是把一些常用.实用.通用的功能封装起来而以,简单的来讲 ...
- 自定义鼠标Cursor转变成图片
今天无意做到项目遇到一个好玩的事情,就是当我鼠标移到一个链接上面,并不是像正常那样出现一个小手,而是变成一个小十字架, 下面看图当时第一眼看到总感觉哪里不对,噢噢噢噢 这样的 小手没了,居然是一个图片 ...
- (多对象)Json转换成List
写的不好,请大家见谅. 1.Json 格式{"packages":[{“type”:”aaa”}],"zone_packages":[{"ticket ...
- ASP.NET实现文件下载
转:http://blog.csdn.net/codeshark/article/details/2473664 方式一:TransmitFile实现下载.将指定的文件直接写入 HTTP 响应输出流, ...
- YII数据库增删查改操作
初学YII, 整理了一些YII数据库的相关操作, 共同学习,共同进步. 一.查询数据集合 //1.该方法是根据一个条件查询一个集合 $admin=Admin::model()->findAll ...
- TSQL Challenge 1
在老外网站发布的一些SQL问题,拿过来自己搞一下,后面我也会陆续转载一些问题,欢迎看到的朋友贴出自己的答案,交流一哈.对于技术问答题的描述,翻译远不不原版来的更好一些,下面我就贴出原版的题目,欢迎参与 ...
- Ubuntu12.4 64位 安装 arm linux gcc 4.3.2
一.下载arm linux gcc 4.3.2 http://pan.baidu.com/share/link?shareid=1575352696&uk=2754759285&fid ...
- (兼容IE6)又一个提示框思密达,腾讯UED 201401242352
找乐子 仿QQ空间的,先来看下,别嫌代码垃圾,业余菜鸟一个,用到的话就当个乐子就行了 注意: 因为有同学说需要IE6便做了一下. 已经处理了IE6,可测试. 腾讯的东西,感觉还好吧:) 使用方法老简单 ...