博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android子线程更新主界面
阅读量:6216 次
发布时间:2019-06-21

本文共 2133 字,大约阅读时间需要 7 分钟。

    学习什么的还是要真正的有应用,有需求才能在最短的时间里面牢牢掌握一项技术。

今天就是这样的,产品一个需求下来,十万火急啊。然后之前只稍稍接触过,只能硬着头皮上了。最后牢牢地掌握了最简单的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();            }

 

转载于:https://www.cnblogs.com/BobAdmin/p/4693101.html

你可能感兴趣的文章
kali之ARP欺骗
查看>>
VMware View 5.0 VS Citrix XenDesktop 5.5性能测试大比拼
查看>>
ubuntu修改配置文件进入单用户模式
查看>>
centos 安装pycharm工作记录
查看>>
公司一哥们整理的mysql查询语句优化
查看>>
进程间通信(IPC)之————管道
查看>>
Spring事务管理入门与进阶
查看>>
083.封装fgetc和fputc
查看>>
面向对象之封装
查看>>
CCRD_TOC_2008年第1期
查看>>
C#linq查询方法使用简介
查看>>
重新了解html
查看>>
linux权限体系简析
查看>>
王高利:NFS共享存储
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
linux svn 客户端安装配置
查看>>
RedHat Enterprise linux 4-6 下载连接汇总
查看>>
主席树K-th Number
查看>>
源码包安装vsftp及相关配置
查看>>