android handler同步,android解决:使用多线程和Handler同步更新UI

如果运行时,可以看到滚动条由条慢慢变短,则说明程序成功了。截图如下,建议选择大点的文件做测试。

0818b9ca8b590ca3270a3433284dd417.png   

0818b9ca8b590ca3270a3433284dd417.png

main.xml

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_height="wrap_content" android:id="@+id/scrollView1" android:layout_width="fill_parent">

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="wrap_content">

android:id="@+id/tv"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

/>

FileRead.java

public class FileRead {

boolean readend=false;

List al=null;

public  class ReadNodesThread extends Thread{//读取线程

public void run()

{

al=new ArrayList(100);

al.clear();

readend=false;

int i=0;

try {

RandomAccessFile raf=new RandomAccessFile("/sdcard/test.txt","r");

//try {

while(raf.getFilePointer()

{

al.add(raf.readLine());

//sleep(100);//如果测试文件太小,这里休眠是为了测试,

}

} catch (Exception e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

readend=true;

}

};

}

MultiThreadActivity.java

public class MultiThreadActivity extends Activity { FileRead fr=null; Handler mHandler=null; int curi=0; Runnable updateui=null; String[] tmp=null; String s=""; TextView tv=null; class ReadListener extends Thread{//监听线程,当数据更新数目大于10条时,更新UI public void run() { int i=0,newi=0; while(!fr.readend) { newi=fr.al.size(); if((newi-i)>10)//新增数据大于10条,更新UI { i=newi; tmp=(String[])fr.al.toArray(new String[fr.al.size()]); mHandler.post(updateui); try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //数据读完了 tmp=(String[])fr.al.toArray(new String[fr.al.size()]); mHandler.post(updateui); try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } }  }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); tv=(TextView)findViewById(R.id.tv); fr=new FileRead(); ReadNodesThread readThread=fr.new ReadNodesThread(); updateui=new Runnable()//更新UI的线程 { @Override public void run() { // TODO Auto-generated method stub int i=0; for(i=curi;i

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/560925.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hashmap hash冲突怎么解决_HashMap原理及冲突之简谈

了解HashMap原理对于日后的缓存机制多少有些认识。在网络中也有很多方面的帖子,但是很多都是轻描淡写,很少有把握的比较准确的信息,在这里试着不妨说解一二。对于HashMap主要以键值(key-value)的方式来体现,笼统的说就是采用key值…

html5把六张图片做成立方体,HTML5绘制在立方体上的几何曲线图形

CSS语言:CSSSCSS确定body {background: #222;width: 100vw;height: 100vh;overflow: hidden;-webkit-filter: blur(1px);filter: blur(1px);box-sizing: border-box;-webkit-perspective: 3000px;perspective: 3000px;}.cube {position: absolute;width: 250px;heig…

c语言中闰年 日期 天数 统计出在某个特定的年份中,出现了多少次既是13号又是星期五的情形

常识: 1、3、5、7、8、10、12月份,每个月31天。2月闰年有29天,非闰年28天其他月份,每月30天 闰年:一年有365天,闰年有366天,所谓闰年,即能被4整除且不能被100整除的年份&#xff0c…

java有啥区别 jsp_Java与JSP有什么区别

Java与JSP的区别有:1、Java是面向对象编程语言,而JSP是一个建立在Java基础上用于开发动态内容的web页面技术;2、Java负责逻辑业务处理,而JSP负责页面展现等等。【推荐课程:Java教程】JAVA是一种编程语言,可…

c++ stl 容器 迭代器 stl用法示例

1.基本概念 1.1容器概述 顺序容器 vector, deque,list关联容器 set, multiset, map, multimap容器适配器 stack, queue, priority_queue 1.1.1迭代器 用于指向顺序容器和关联容器中的元素迭代器用法和指针类似 有const 和非 const两种通过迭代器可以读取它指向的元素通过非…

python julian date_Python 的内嵌time模板翻译及说明

一、简介time模块提供各种操作时间的函数 说明:一般有两种表示时间的方式: 第一种是时间戳的方式(相对于1970.1.1 00:00:00以秒计算的偏移量),时间戳是惟一的 第二种以数组的形式表示即(struct_time),共有九个元素,分别表示,同一个时间戳的st…

html玫瑰花效果代码,html5渲染3D玫瑰花情人节礼物js特效代码

情人节马上就要到来了,这里给程序员前端设计师们献上一个,html5渲染而成的3D玫瑰花js效果,可以作为虚拟的情人节礼物送给自己的爱人。支持html5的浏览器查看。查看演示下载资源:16次 下载资源下载积分:20积分情人节玫瑰…

跳跃游戏(数组下标跳跃)

给定一个非负整数数组,假定你的初始位置为数组第一个下标。 数组中的每个元素代表你在那个位置能够跳跃的最大长度。 请确认你是否能够跳跃到数组的最后一个下标。 例如:A [2,3,1,1,4]A[2,3,1,1,4] 能够跳跃到最后一个下标,输出true&…

qc中的流程图怎么画_QC流程图参考

华北工控股份有限公司QC流程图样件试产量产文件编号:WI-MED-000FIC-G009版本:A0修改日期:客户:常规品机种:pcba适用工序:IQC/SMT/DIP/OQC/TEST/PACK审核:批准:检验方法检验频率记录担当负责人在制品完成品11确认型号、数量依送货单核对型号/数量仓库检查…

html 页面怎么加载富文本,UILabel加载html富文本

本文主要解决html标签之外文本属性设置当APP里面有搜索的需求的时候,产品可能会要求关键字显示特殊颜色或者字体。其中一种可能性是服务器返回的数据是带有html标签的字符串,那么该怎么解决?当标签之外的其他字体也需要设置不同格式&#xff…

python 打印皮卡丘_用python打印你的宠物小精灵吧

我们来通过一个有趣的例子开始编写我们的第一个python代码。本文涉及的python基础语法为:print输出函数,赋值,字符串print()print()是python的一个内置函数,用于打印输出,是最常见的一个函数之一。有些朋友可能对于打印…

最大子阵列

在一个数组中找出和最大的连续几个数。(至少包含一个数) 例如: 数组A[] [−2, 1, −3, 4, −1, 2, 1, −5, 4],则连续的子序列[4,−1,2,1]有最大的和6. 输入格式 第一行输入一个不超过1000的整数n。 第二行输入n个整数A[i]。…

html嵌入原始数据,如何用html和javascript显示原始图像数据?

我有一个ajax应用程序,PHP端将来自摄像头的未编码的原始图像数据发送到客户端javascript端.我想使用img或canvas标签通过html和javascript显示图像.图像数据是32 * 32无符号字符.我想做,无论达到我的目标(编码或其他所有),但我想在客户端做,因为我无法处理服务器端的任何其他操…

三值排序

排序是一种很频繁的计算任务。一个实际的例子是,当我们给某项竞赛的优胜者按金银铜牌排序的时候。在这个任务中可能的值只有三种1,2和3。我们用交换的方法把他排成升序的。 写一个程序计算出,计算出的一个包括1、2、3三种值的数字序列&#…

imgaug批量椒盐噪声 python_python图像扩增-imgaug

# encodingutf-8import osimport imageioimport randomimport numpy as npimport imgaug as iaimport concurrent.futuresfrom imgaug import augmenters as iaaimport matplotlib.pyplot as pltfrom argparse import ArgumentParseria.seed(4)# %matplotlib inline# 参考 http…

express html文件接收路由参数,express 获取post 请求参数

在 Express 中没有内置获取表单 POST 请求体的 API , 我们需要添加第三方插件库安装:npm install --save body-parser配置:var bodyParser require(body-parser)//配置 body-parser 中间件 (插件, 专门用来解析表单 POST 请求)// parse application/x-www-form-urlencodedapp.…

深度优先搜索重要模板

深度优先搜索(Depth-First-Search) 从起点出发,走过的点要做标记,发现有没走过的点,就随意挑一个往前走,走不 了就回退,此种路径搜索策略就称为“深度优先搜索”,简称“深搜”。 其实称为“远度优先搜索”…

360浏览器查看html文件在哪里,360浏览器8菜单栏怎么弄出来?如何查看网站源代码...

今天想查看一个页面的源代码,没想到这个页面竟然禁止了鼠标右键功能,所以无法通过鼠标右键选择“查看源代码”来查看。然后就想通过 360 浏览器的“查看源代码”按钮进行查看,没想到找了半天都找不到这个按钮,最后只能通过查看源代…

tcp欢动窗口机制_TCP协议中的窗口机制------滑动窗口详解

一、窗口机制的分类在TCP协议当中窗口机制分为两种:1.固定的窗口大小2.滑动窗口二、固定窗口存在的问题如下图所示:我们假设这个固定窗口的大小为1,也就是每次只能发送一个数据,只有接收方对这个数据进行了确认后才能发送第二个数…

1-1.HTML、CSS、JavaScript语言在web前端开发中的作用

HTML是网页内容的载体。内容就是网页制作者放在页面上想要让用户浏览的信息,可以包含文字、图片、视频等。 CSS样式是表现。 就像网页的外衣。比如,标题字体、颜色变化,或为标题加入背景图片、边框等。所有这些用来改变内容外观的东西称之为…