四种更新UI的方法
笔记:
// 使用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的方法的更多相关文章
- android四种更新UI的方法
笔记: // 使用handler.post(Runnable)更新UI public void updateUI_Fun1() { new Thread() { public void run() { ...
- 关于runOnUiThread()与Handler两种更新UI的方法
在Android开发过程中,常需要更新界面的UI.而更新UI是要主线程来更新的,即UI线程更新.如果在主线线程之外的线程中直接更新页面显示常会报错.抛出异常:android.view.ViewRoot ...
- javascript四种类型识别的方法
× 目录 [1]typeof [2]instanceof [3]constructor[4]toString 前面的话 javascript有复杂的类型系统,类型识别则是基本的功能.javascrip ...
- jsp中四种传递参数的方法
jsp中四种传递参数的方法如下: 1.form表单 2.request.setAttribute();和request.getAttribute(); 3.超链接:<a herf="i ...
- JavaScript四种数值取整方法
一.Math.trunc() 1.定义 Math.trunc()方法去除数字的小数部分,保留整数部分. 2.语法 Math.trunc(value) 3.示例 console.log(Math.tru ...
- Python四种实现单例模式的方法
在这之前,先了解super()和__new__()方法 super()方法: 返回一个父类或兄弟类类型的代理对象,让你能够调用一些从继承过来的方法. 它有两个典型作用: a. 在单继承的类层次结构中, ...
- 四种异步更新UI的方法
Android要求只能在UI线程中更新UI,要想在其他线程中更新UI,大致有四种方式: 1.使用Handler消息传递机制(推荐)2.使用AsyncTask异步任务(推荐)3.使用runOnUiThr ...
- Android线程间通信更新UI的方法(重点分析EventBus)
Android的UI更新只能在UI线程中,即主线程.子线程中如果要进行UI更新,都是要通知主线程来进行. 几种实现方式总结如下,欢迎补充. 1.runOnUiThread() 子线程中持有当前Acti ...
- Android子线程更新UI的方法总结
版权声明:本文为博主原创文章,转载请注明出处:https://i.cnblogs.com/EditPosts.aspx?postid=6121280 消息机制,对于Android开发者来说,应该是非常 ...
随机推荐
- 用戶登陸。防SQL注入,驗證碼不區分大小寫。。
if (string.Compare(TBCheckCode.Text, Session["CheckCodeI"].ToString(), true) == 0) ...
- cross apply 和 outer apply
使用APPLY运算符可以实现查询操作的外部表表达式返回的每个调用表值函数.表值函数作为右输入,外部表表达式作为左输入. 通过对右输入求值来获得左输入每一行的计算结果,生成的行被组合起来作为最终输出.A ...
- SQL 根据生日和日期计算年龄
FLOOR(datediff(DY,p.Dob,o.RegisterTime)/365
- 最短路算法 -- SPFA模板
一.算法步骤 建立一个队列,初始时队列里只有起始点,再建立一个数组记录起始点到所有点的最短路径(该数组的初始值要赋为极大值,该点到它本身的路径赋为0,下面的模板中该数组为dist[]).然后执行松弛操 ...
- Yii2之控制台命令篇(console)
控制台命令 Yii 中有一个拥有丰富功能的控制台,它们主要用于创建网站后台处理的任务.在项目根目录下执行相关操作,有意思的事,可以通过 yii 自带的功能,列出当前已有的命令. 1.查看当前项目控制台 ...
- Bootstrap进阶五:Web开发中很实用的交互效果积累
1.页面切换效果 我们已经在示例中罗列了一组动画,可以被应用到页面切换过程中,创造出很有趣的导航效果.  2.视差滚动(parallax-slider) 视差滚动(parallax-slider)已 ...
- Xiaoguang Tu's Home Page
Xiaoguang Tu (涂晓光): CV: Ph.D. Candidate of School of Communication and Information Engineering, Univ ...
- 让ORM支持多结果集
在现有的ORM框架中,都支持查询单个结果集.比如查询用户表,传入语句,返回一个用户对象的集合.虽然一次性查询多个结果集的情况不多,而且也可以通过多次查询得到,但是从写框架的角度来说,我们并不清楚客户( ...
- 【拉格朗日插值法】【找规律】【高精度】Gym - 101156G - Non-Attacking Queens
题意:问你n*n的国际象棋棋盘上放3个互不攻击皇后的方案数. oeis……公式见代码内 //a(n) = 5a(n - 1) - 8a(n - 2) + 14a(n - 4) - 14a(n - 5) ...
- hdu 1208 记忆化搜索
题目大意:只能按照格子上的数字*方向走,从左上走到右下Sample Input42331121312313110Sample Output3 直接记忆化搜索,注意是0的情况 #include<c ...