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

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

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

  1. Android中Activity、Window、ViewRootImpl与子线程更新UI

    三者层级关系 1.Window Window是一个抽象类,唯一的实现类是PhoneWindow Window分为三种类型应用Window.子Window.系统Window.子Window无法独立存在必 ...

  2. java数据同步处理_Java如何处理多线程的数据同步问题

    在这里写这种文章好奇怪,先用作笔记吧 Java中有如下的方法来处理代码块的并发访问问题: 一是关键字synchronized 二是加锁(锁对象,条件对象) Java给每一个对象都提供了一个内部锁,在方 ...

  3. Android ANR异常及解决方法

    2019独角兽企业重金招聘Python工程师标准>>> 今天面试遇到这道题,刚开始没看出这个anr缩写的意思,后来问了面试官原来是这个意思: ANRs ("Applicat ...

  4. Android 面试(Android 篇)

    Android 面试 安卓篇 一.跨进程通信的几种方式 二.多进程应用使用场景 三.Binder 机制 (进程间的通信) 四.说一说 ANR 五.什么是OOM,如何避免解决 六.内存泄露,内存溢出,内 ...

  5. VC++ MFC 多线程及线程同步(详细、全面总结!)

    更多详情:http://blog.csdn.net/whyacinth/ VC++ MFC 多线程及线程同步 关键词: MFC    多线程及线程同步                          ...

  6. Qt中多线程间的同步

    文章目录 1 Qt中多线程间的同步 1 Qt中多线程间的同步 多线程编程的本质是什么? 并发性是多线程编程的本质. 在宏观上,所有线程并行执行. 多个线程间相互独立,互补干涉. 常规解决方案设计: 问 ...

  7. linux安卓主线程同步,Android解决:使用多线程和Handler同步更新UI

    如果运行时,可以看到滚动条由条慢慢变短,则说明程序成功了.截图如下,建议选择大点的文件做测试. main.xml xmlns:Android="http://schemas.android. ...

  8. Android下的多线程下Handler的使用

    在Android下面也有多线程的概念,在C/C++中,子线程可以是一个函数,一般都是一个带有循环的函数,来处理某些数据,优先线程只是一个复杂的运算过程,所以可能不需要while循环,运算完成,函数结束 ...

  9. Android应用开发—如何解决handler的警告:Handler Class Should be Static or Leaks Occur

    转自android handler的警告Handler Class Should be Static or Leaks Occur 在使用Handler更新UI的时候,我是这样写的: public c ...

最新文章

  1. 线程和进程的自己觉得好的文章以及自我理解
  2. 用C++实现不能被继承的类
  3. linux 状态码的意义,HTTP状态码是什么?常见的状态码描述都有什么?
  4. 【Java进阶营】JAVA多线程基础学习二:synchronized
  5. std中稳定排序算法_排序算法问题:稳定排序与不稳定排序
  6. Akka查询设备组《fourteen》译
  7. 【渝粤题库】陕西师范大学500901 基础物理专题(力、热) 作业(专升本)
  8. 读掘金小册组件精讲总结3
  9. 是什么的简称_全国各地区车牌号简称,说说你们那的车牌是什么?
  10. ubuntu升级显卡驱动
  11. splunk 日志分析软件 简介
  12. 用 Python 让 Excel 快速按条件筛选数据
  13. 故障分析 | MySQL 8.0 解决连接满问题
  14. 使用PPT保存300dpi或者指定dpi的高质量图片
  15. Homebrew替换阿里云镜像源
  16. 阿里云导出负载均衡SLB实例数据
  17. 单片机片内存储器烧写
  18. 独立,做新世纪的好少年,无所畏惧
  19. 【汇正财经】除权和除息是什么?
  20. 分享pdf转换成word格式的最新方法

热门文章

  1. Win10安装 WSL Ubuntu Linux系统,非双系统,完美兼容超详细版本
  2. Max retries exceeded with URL报错小记
  3. 计算机ppt文字1是什么原因,ppt让答案一个个出现,ppt让文字一个个出现
  4. redis工具类_SpringBoot 操作 Redis 数据
  5. 项目管理知识体系指南_MP考前冲刺丨项目管理知识体系指南(PMBOK)串讲(11)...
  6. Status Code:200 OK (from disk cache)和304的区别,以及怎么禁止缓存
  7. 后台返回给前端json字段的大小写问题,Lombok的坑@Data,@Getter
  8. oracle将字符串的日期格式化,oracle格式化字符串 oracle 怎么把字符串转换成日期...
  9. 一开机就提示脱机工作_「华为手机维修自学教程」华为手机的开机触发电路 华为维修技巧...
  10. signature=f0dd2033ed5bb3cdb94f9136381f7750,Lesson 8: Signature Assignment