博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android学习笔记之:android更新ui的几种经常用法
阅读量:5972 次
发布时间:2019-06-19

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

Android主线程不能运行耗时操作。我们通常是在子线程中运行耗时操作, 我们在运行完耗时操作后,我们一般能够通过下面几种方式来实现ui界面的更新。

首先是布局文件:

————–代码实现,有凝视————————————-

public class MainActivity extends Activity implements OnClickListener {
private TextView mTextView; private Button update_mButton_01; private Button update_mButton_02; private Button update_mButton_03; private Button update_mButton_04; private Handler mPostHander = new Handler() { public void handleMessage(android.os.Message msg) { if (msg.what == 1) { // 更新UI mTextView.setText("通过Hander Send Message更新Ui"); } }; }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initViews(); initEvents(); } /** * 初始化控件 * @description: * @date 2015-10-8 上午10:55:49 */ private void initViews() { this.mTextView = (TextView) findViewById(R.id.mTextView); this.update_mButton_01 = (Button) findViewById(R.id.update_mButton_01); this.update_mButton_02 = (Button) findViewById(R.id.update_mButton_02); this.update_mButton_03 = (Button) findViewById(R.id.update_mButton_03); this.update_mButton_04 = (Button) findViewById(R.id.update_mButton_04); } /** * 事件监听 * @description: * @date 2015-10-8 上午10:56:02 */ private void initEvents() { this.update_mButton_01.setOnClickListener(this); this.update_mButton_02.setOnClickListener(this); this.update_mButton_03.setOnClickListener(this); this.update_mButton_04.setOnClickListener(this); } @Override public void onClick(View view) { switch (view.getId()) { case R.id.update_mButton_01:// 第一种方式,通过Hander.post方法来实现UI更新 new Thread() { public void run() { try { sleep(2000);// 休眠2秒,模拟耗时操作 mPostHander.post(new Runnable() { @Override public void run() { // 更新UI mTextView.setText("通过Hander Post更新Ui"); } }); } catch (InterruptedException e) { e.printStackTrace(); } }; }.start(); break; case R.id.update_mButton_02:// 直接通过Hander发送Message来更新UI new Thread() { public void run() { try { sleep(2000);// 休眠2秒。模拟耗时操作 mPostHander.sendEmptyMessage(1); } catch (InterruptedException e) { e.printStackTrace(); } }; }.start(); break; case R.id.update_mButton_03:// 通过runOnUiThread来实现ui更新 new Thread() { public void run() { try { sleep(2000);// 休眠2秒。模拟耗时操作 runOnUiThread(new Runnable() { @Override public void run() { // 更新UI mTextView.setText("通过runOnUiThread更新Ui"); } }); } catch (InterruptedException e) { e.printStackTrace(); } }; }.start(); break; case R.id.update_mButton_04:// 直接利用View.post方法来更新ui mTextView.post(new Runnable() { @Override public void run() { // 更新UI mTextView.setText("通过View.post()更新Ui"); } }); break; } }}

转载于:https://www.cnblogs.com/gavanwanggw/p/7115557.html

你可能感兴趣的文章
Nsrp实现juniper防火墙的高可用性【HA】!
查看>>
oracle11g 安装在rhel5.0笔记
查看>>
解决Lync 2013演示PPT提示证书问题的多种方法
查看>>
bootloader功能介绍/时钟初始化设置/串口工作原理/内存工作原理/NandFlash工作原理...
查看>>
C++ 构造函数与析构函数
查看>>
ssh免密码登录
查看>>
Linux下Django环境安装
查看>>
如何在指定的内容中找出指定字符串的个数
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
Spring MVC请求处理流程分析
查看>>
Web应用工作原理、动态网页技术
查看>>
EXCEL工作表保护密码破解 宏撤销保护图文教程
查看>>
Catalan数(卡特兰数)
查看>>
python 数据库中文乱码 Excel
查看>>
利用console控制台调试php代码
查看>>
递归算法,如何把list中父子类对象递归成树
查看>>
jsf初学解决GlassFish Server 无法启动
查看>>
hdu 1050 (preinitilization or postcleansing, std::fill) ...
查看>>
Linux vmstat命令实战详解
查看>>