笔记:

 
// 使用handler.post(Runnable)更新UI
public void updateUI_Fun1() {
new Thread() {
public void run() {
Handler handler = new Handler();
handler.post(new Runnable() { @Override
public void run() {
textView.setText("this is update content");
}
});
};
}.start();
} // 使用handler发送消息更新UI
public void updateUI_Fun2() {
Handler handler = new Handler(new Callback() { @Override
public boolean handleMessage(Message msg) {
// 对handler发送消息的预处理,返回falst则执行下面的handlerMessage() true则不执行 return false;
}
}) {
public void handleMessage(Message msg) {
textView.setText("this is update content");
};
};
} // 使用UI线程更新UI
public void updataUI_Fun3() {
runOnUiThread(new Runnable() { @Override
public void run() {
textView.setText("updata ui content");
}
});
} // 使用View.post( Runnable)更新UI
public void updateUI_Fun4() {
textView.post(new Runnable() { @Override
public void run() {
textView.setText("this is update context"); }
});
}
 

使用子线程自带的Looper更新UI:

代码笔记:

 
private Handler handler2;
private HandlerThread thread; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second); myHandlerThread = (Button) findViewById(R.id.MyThreadHandler);
handlerThread = (Button) findViewById(R.id.HandlerThread); //利用HandlerThread线程执行耗时操作,可以简单代替AsyncTask等。主线程给子线程发送消息
handlerThread.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
thread=new HandlerThread("aaaa");
thread.start();
handler2=new Handler(thread.getLooper()){
@Override
public void handleMessage(Message msg) {
Toast.makeText(SecondActivity.this, "this is HandlerThread", Toast.LENGTH_SHORT).show();
}
};
handler2.sendEmptyMessage(1);
}
});
 

四种更新UI的方法的更多相关文章

  1. android四种更新UI的方法

    笔记: // 使用handler.post(Runnable)更新UI public void updateUI_Fun1() { new Thread() { public void run() { ...

  2. 关于runOnUiThread()与Handler两种更新UI的方法

    在Android开发过程中,常需要更新界面的UI.而更新UI是要主线程来更新的,即UI线程更新.如果在主线线程之外的线程中直接更新页面显示常会报错.抛出异常:android.view.ViewRoot ...

  3. javascript四种类型识别的方法

    × 目录 [1]typeof [2]instanceof [3]constructor[4]toString 前面的话 javascript有复杂的类型系统,类型识别则是基本的功能.javascrip ...

  4. jsp中四种传递参数的方法

    jsp中四种传递参数的方法如下: 1.form表单 2.request.setAttribute();和request.getAttribute(); 3.超链接:<a herf="i ...

  5. JavaScript四种数值取整方法

    一.Math.trunc() 1.定义 Math.trunc()方法去除数字的小数部分,保留整数部分. 2.语法 Math.trunc(value) 3.示例 console.log(Math.tru ...

  6. Python四种实现单例模式的方法

    在这之前,先了解super()和__new__()方法 super()方法: 返回一个父类或兄弟类类型的代理对象,让你能够调用一些从继承过来的方法. 它有两个典型作用: a. 在单继承的类层次结构中, ...

  7. 四种异步更新UI的方法

    Android要求只能在UI线程中更新UI,要想在其他线程中更新UI,大致有四种方式: 1.使用Handler消息传递机制(推荐)2.使用AsyncTask异步任务(推荐)3.使用runOnUiThr ...

  8. Android线程间通信更新UI的方法(重点分析EventBus)

    Android的UI更新只能在UI线程中,即主线程.子线程中如果要进行UI更新,都是要通知主线程来进行. 几种实现方式总结如下,欢迎补充. 1.runOnUiThread() 子线程中持有当前Acti ...

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

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

随机推荐

  1. MySQL 存储过程入门

    存储过程是带有逻辑的SQL语句,优点是执行效率高.缺点是可移植性差 1.存储过程语法 DELIMITER $ --声明结束符 CREATE PROCEDURE pro_test() --创建存储过程 ...

  2. ES按资源类型统计个数

    一.目标:统计各类型资源的个数,输出详细报表 http://10.10.6.225:9200/dsideal_db/t_resource_info/ _mapping {  "propert ...

  3. 《精通Python设计模式》学习结构型之代理模式

    这种模式,总会让人想到SRPING中的AOP, 不同语言有不同的实现方式吧. class SensitiveInfo: def __init__(self): self.users = ['nick' ...

  4. 2017 Tag Cloud

    距离上一篇随笔已经过去了三年多,惊讶地发现我还有个博客在这里 :) 越来越懒,这三年多就用下面这个tag cloud来总结好了

  5. 【LOJ】#2541. 「PKUWC2018」猎人杀

    题解 一道神仙的题>< 我们毙掉一个人后总的w的和会减少,怎么看怎么像指数算法 然而,我们可以容斥-- 设\(\sum_{i = 1}^{n} w_{i} = Sum\) 我们把问题转化一 ...

  6. USACO 5.1 Starry Night

    Starry NightIOI 98 High up in the night sky, the shining stars appear in clusters of various shapes. ...

  7. bzoj 1228 [SDOI2009]E&D

    sg表很好打,规律很不好找.... #include<bits/stdc++.h> #define LL long long #define fi first #define se sec ...

  8. 取得项目的 Git 仓库

    有两种取得 Git 项目仓库的方法.第一种是在现存的目录下,通过导入所有文件来创建新的 Git 仓库.第二种是从已有的 Git 仓库克隆出一个新的镜像仓库来. 在工作目录中初始化新仓库 要对现有的某个 ...

  9. synchoronized和lock区别

    synchoronized是JVM的内置锁,而lock是Java代码实现的.lock是sync对的扩展,完全可以替代后者.lock可以重入,允许同一个线程连续多次获得同一把锁.其次,lock独有的功能 ...

  10. type与instance区别

    class Foo(object): pass class Bar(Foo): pass obj = Bar() # isinstance用于判断,对象是否是指定类或其派生类的实例 print(isi ...