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();
        
    }

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值