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

今天就是这样的,产品一个需求下来,十万火急啊。然后之前只稍稍接触过,只能硬着头皮上了。最后牢牢地掌握了最简单的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子线程更新主界面的更多相关文章

  1. Python+PyQT5的子线程更新UI界面的实例《新手必学》

    今天小编就为大家分享一篇Python+PyQT5的子线程更新UI界面的实例,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧子线程里是不能更新UI界面的,在移动端方面.Android的U ...

  2. Android子线程更新UI成功

    android子线程更新UI成功 今天在写demo的时候,在子线程中更新UI,发现更新成功,记录一下. protected void onCreate(Bundle savedInstanceStat ...

  3. Android子线程更新UI的方法总结

    版权声明:本文为博主原创文章,转载请注明出处:https://i.cnblogs.com/EditPosts.aspx?postid=6121280 消息机制,对于Android开发者来说,应该是非常 ...

  4. android子线程更新UI

    参考:https://www.cnblogs.com/joy99/p/6121280.html 子线程是不能直接更新UI的.Android实现View更新有两组方法,分别是invalidate和pos ...

  5. Android子线程更新UI主线程方法之Handler

    背景: 我们开发应用程序的时候,处于线程安全的原因子线程通常是不能直接更新主线程(UI线程)中的UI元素的,那么在Android开发中有几种方法解决这个问题,其中方法之一就是利用Handler处理的. ...

  6. C#多线程应用:子线程更新主窗体控件的值(二)

    在上篇文章中,我已经给大家列了一个在主线程中实现的方式,这篇文章来给大家说说使用Invoke的方式的例子: 对于不代理不太熟悉的朋友,建议先查查相关资料: 例子一: 在C#中,直接在子线程中对窗体上的 ...

  7. C#多线程应用:子线程更新主窗体控件的值(一)

    我记得以前写过一次关于多线程的调用及更新的文章,由于时间比较久了,现在一时没找到.在做项目的时候,用到了多线程,还是有很多的同事在问多线程更新主窗体的事情,现在就这个事情做个记录. 说起多线程之间的更 ...

  8. Android 子线程更新UI 异常

    众所周知,Android是不可以在子线程中直接更新UI的,需要借助Handler或者View.post(Runnable runnable)或者runOnUIThread(Runnable runna ...

  9. android 子线程更新UI

    参考http://examples.javacodegeeks.com/android/core/os/handler/android-handler-example/package com.exam ...

随机推荐

  1. 第二篇:智能电网(Smart Grid)中的数据工程与大数据案例分析

    前言 上篇文章中讲到,在智能电网的控制与管理侧中,数据的分析和挖掘.可视化等工作属于核心环节.除此之外,二次侧中需要对数据进行采集,数据共享平台的搭建显然也涉及到数据的管理.那么在智能电网领域中,数据 ...

  2. iOS中navigationItem的titleView如何居中

    开发过程中,发现titleview很难居中,通过各种尝试终于找到了解决方法. 首先清楚你个概念: leftBarButtonItem,导航条中左侧button. rightBarButtonItem, ...

  3. 在一个UIView中如何使用多个UIPickerView

    可以现在storyboard的UIView中拖入多个UIPickerView 然后同样是继承相关的UIPickerView协议 <UIPickerViewDataSource,UIPickerV ...

  4. POJ 1039 Pipe 枚举线段相交

    Pipe Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 9493   Accepted: 2877 Description ...

  5. markdown 简明语法

    今天同事聊到markdown用法 之前不怎么了解  先把网上的建明语法贴出来 以备后用. 基本符号 *,-,+ 3个符号效果都一样,这3个符号被称为 Markdown符号 空白行表示另起一个段落 `是 ...

  6. java 类处理工具

    public class ClassUtils { private static final Logger LOGGER = LoggerFactory.getLogger(ClassUtils.cl ...

  7. contains选择器

    有这样一个问题: 一个列表里面,很多option,但是在不知道value,只知道他的内容的时候,怎么进行选择,比如: 北京市天津市上海市重庆市 在不知道他的value和index的时候,选择北京市,能 ...

  8. uva 11673 Garbage Remembering Exam (概率)

    题目链接: http://vjudge.net/problem/viewProblem.action?id=42000 该过程为随即过程,因此总期望值等于个单词对应的期望值,即它们wasted的概率 ...

  9. nodejs新手教程中upload file的问题

    可参见: http://cnodejs.org/topic/50234890f767cc9a51f88481 request.setEncoding("utf8");应注释掉.

  10. Android学习----打印日志Log

    Log.v(tag,msg);所有内容 Log.d(tag,msg);debug Log.i(tag,msg);一般信息 Log.w(tag,msg);警告信息 Log.e(tag,msg);错误信息 ...