当前位置: 首页 > news >正文

海南建设网网站韶关seo

海南建设网网站,韶关seo,开发工具指的是什么,哈尔滨网站seo公司随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666) android中更新UI的方式比较多,这里就不一一介绍了,比较常用的ThreadHandler,但是这种方式较繁琐,如在使用Progres…

随时随地技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)

android中更新UI的方式比较多,这里就不一一介绍了,比较常用的Thread+Handler,但是这种方式较繁琐,如在使用ProgressDialog创建进度对话框 一文中就是使用的这种方式更新UI线程,下面介绍一种使用Activity的runOnUiThread方法来实现同样的功能,仍以此示例为例:

MainActivity:

package com.home.testrunonuithread;import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;public class MainActivity extends Activity {// 该程序模拟填充长度为100的数组private int[] data = new int[100];private int hasData = 0;// 定义进度对话框的标识private final int PROGRESS_DIALOG = 0x112;// 记录进度对话框完成的百分比private int progressStatus = 0;// 定义一个进度对话框对象private ProgressDialog pd;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);Button btn = (Button) findViewById(R.id.btn1);btn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {progressStatus = 0;hasData = 0;// 显示指定对话框showDialog(PROGRESS_DIALOG);}});}// 创建对话框@Overrideprotected Dialog onCreateDialog(int id, Bundle args) {switch (id) {case PROGRESS_DIALOG:// 创建进度对话框pd = new ProgressDialog(this);pd.setMax(100);// 设置对话框标题pd.setTitle("任务完成百分比");// 设置对话框显示的内容pd.setMessage("下载完成的百分比");// 设置对话框不能用取"消按"钮关闭pd.setCancelable(false);// 设置对话框的进度条风格// pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);// 设置对话框的进度条是否显示进度pd.setIndeterminate(false);break;}return pd;}// 该方法将在onCreateDialog调用后被回调@Overrideprotected void onPrepareDialog(int id, Dialog dialog) {super.onPrepareDialog(id, dialog);switch (id) {case PROGRESS_DIALOG:// 对话框进度清零pd.incrementProgressBy(-pd.getProgress());new Thread() {public void run() {while (progressStatus < 100) {// 获取耗时任务完成的百分比progressStatus = doWork();// 运行于UI线程runOnUiThread(new Runnable() {@Overridepublic void run() {// 设置进度条的进度pd.setProgress(progressStatus);}});}// 如果任务已经完成if (progressStatus >= 100) {// 关闭对话框pd.dismiss();}}}.start();break;}}/*** 模拟一个耗时的操作* * @return*/public int doWork() {// 为数组元素赋值data[hasData++] = (int) (Math.random() * 100);try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}return hasData;}
}

布局文件只有一个按钮不再给出。

从runOnUiThread的源码可以看出:

public final void runOnUiThread(Runnable action) {if (Thread.currentThread() != mUiThread) {mHandler.post(action);} else {action.run();}}


程序首先会判断当前线程是否是UI线程,如果是就直接运行,如果不是则post,这时其实质还是使用的Handler机制来处理线程与UI通讯。

但这个方法,在处理一些简要的更新UI操作时(比如更新adapter等),显得更简洁、方便。

http://www.lbrq.cn/news/2507887.html

相关文章:

  • 企业品牌网站建设成都搜索优化排名公司
  • 龙岗网站建设 公司推广如何推销网站
  • 全国疫情最新消息地图seo排名优化怎样
  • 网站建设 提案 框架网络营销师报考条件
  • 专业做校园文化的网站企业推广平台有哪些
  • 新公司网站建设网站推广基本方法是
  • wordpress 企业网站 免费下载如何免费推广网站
  • 如何做英文系统下载网站郑州本地seo顾问
  • 网站建设开发报价明细整站seo排名
  • 武汉抖音seo推广网站关键词排名seo
  • 网站设置301重定向微信小程序开发公司
  • 浅析php网站建设的八大优势阿里数据
  • 关于建设政府门户网站的请示长沙seo网站优化
  • python 做企业网站优化排名 生客seo
  • 上海怎样建设网站零基础学电脑培训班
  • 上海网站建设费用多少性能优化大师
  • 要建设一个网站需要准备些什么北大青鸟软件开发培训学费多少
  • 注册公司上什么网站自动优化app
  • 阀门网站建设百度登录个人中心
  • 国外手表网站科技公司网站制作公司
  • 黑龙江省建设网站营销网络是啥意思
  • 深圳购物网站建设报价做网站哪家好
  • 怎样查看网站是用什么cms 做的今日的新闻头条10条
  • 编程自学免费网站成都网站优化公司
  • 金华市住房和城乡建设厅网站中国站长之家
  • 做幼儿园设计方案的网站免费发布广告的平台
  • 网站做端口是什么优化
  • 网站后台管理系统一般用户名是什么大白兔网络营销策划书
  • 在哪里购买虚拟空间建设网站合肥网站seo整站优化
  • 深圳骏域网站建设专家88百度推广网站一年多少钱
  • Arduino与STM32:初学者该如何选择?
  • STM32 USB HOST 驱动FT232 USB转串
  • JAVA后端开发——“全量同步”和“增量同步”
  • <RT1176系列11>DMAMUX解读
  • 从零开始的云计算生活——第三十七天,跬步千里,ansible之playbook
  • RK3568基于mpp实现硬解码(二):FFmpeg + mpp实现ipc摄像头图像解码