android handler同步,android解决:使用多线程和Handler同步更新UI
如果运行时,可以看到滚动条由条慢慢变短,则说明程序成功了。截图如下,建议选择大点的文件做测试。
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相关推荐
- Android中Activity、Window、ViewRootImpl与子线程更新UI
三者层级关系 1.Window Window是一个抽象类,唯一的实现类是PhoneWindow Window分为三种类型应用Window.子Window.系统Window.子Window无法独立存在必 ...
- java数据同步处理_Java如何处理多线程的数据同步问题
在这里写这种文章好奇怪,先用作笔记吧 Java中有如下的方法来处理代码块的并发访问问题: 一是关键字synchronized 二是加锁(锁对象,条件对象) Java给每一个对象都提供了一个内部锁,在方 ...
- Android ANR异常及解决方法
2019独角兽企业重金招聘Python工程师标准>>> 今天面试遇到这道题,刚开始没看出这个anr缩写的意思,后来问了面试官原来是这个意思: ANRs ("Applicat ...
- Android 面试(Android 篇)
Android 面试 安卓篇 一.跨进程通信的几种方式 二.多进程应用使用场景 三.Binder 机制 (进程间的通信) 四.说一说 ANR 五.什么是OOM,如何避免解决 六.内存泄露,内存溢出,内 ...
- VC++ MFC 多线程及线程同步(详细、全面总结!)
更多详情:http://blog.csdn.net/whyacinth/ VC++ MFC 多线程及线程同步 关键词: MFC 多线程及线程同步 ...
- Qt中多线程间的同步
文章目录 1 Qt中多线程间的同步 1 Qt中多线程间的同步 多线程编程的本质是什么? 并发性是多线程编程的本质. 在宏观上,所有线程并行执行. 多个线程间相互独立,互补干涉. 常规解决方案设计: 问 ...
- linux安卓主线程同步,Android解决:使用多线程和Handler同步更新UI
如果运行时,可以看到滚动条由条慢慢变短,则说明程序成功了.截图如下,建议选择大点的文件做测试. main.xml xmlns:Android="http://schemas.android. ...
- Android下的多线程下Handler的使用
在Android下面也有多线程的概念,在C/C++中,子线程可以是一个函数,一般都是一个带有循环的函数,来处理某些数据,优先线程只是一个复杂的运算过程,所以可能不需要while循环,运算完成,函数结束 ...
- Android应用开发—如何解决handler的警告:Handler Class Should be Static or Leaks Occur
转自android handler的警告Handler Class Should be Static or Leaks Occur 在使用Handler更新UI的时候,我是这样写的: public c ...
最新文章
- 线程和进程的自己觉得好的文章以及自我理解
- 用C++实现不能被继承的类
- linux 状态码的意义,HTTP状态码是什么?常见的状态码描述都有什么?
- 【Java进阶营】JAVA多线程基础学习二:synchronized
- std中稳定排序算法_排序算法问题:稳定排序与不稳定排序
- Akka查询设备组《fourteen》译
- 【渝粤题库】陕西师范大学500901 基础物理专题(力、热) 作业(专升本)
- 读掘金小册组件精讲总结3
- 是什么的简称_全国各地区车牌号简称,说说你们那的车牌是什么?
- ubuntu升级显卡驱动
- splunk 日志分析软件 简介
- 用 Python 让 Excel 快速按条件筛选数据
- 故障分析 | MySQL 8.0 解决连接满问题
- 使用PPT保存300dpi或者指定dpi的高质量图片
- Homebrew替换阿里云镜像源
- 阿里云导出负载均衡SLB实例数据
- 单片机片内存储器烧写
- 独立,做新世纪的好少年,无所畏惧
- 【汇正财经】除权和除息是什么?
- 分享pdf转换成word格式的最新方法
热门文章
- Win10安装 WSL Ubuntu Linux系统,非双系统,完美兼容超详细版本
- Max retries exceeded with URL报错小记
- 计算机ppt文字1是什么原因,ppt让答案一个个出现,ppt让文字一个个出现
- redis工具类_SpringBoot 操作 Redis 数据
- 项目管理知识体系指南_MP考前冲刺丨项目管理知识体系指南(PMBOK)串讲(11)...
- Status Code:200 OK (from disk cache)和304的区别,以及怎么禁止缓存
- 后台返回给前端json字段的大小写问题,Lombok的坑@Data,@Getter
- oracle将字符串的日期格式化,oracle格式化字符串 oracle 怎么把字符串转换成日期...
- 一开机就提示脱机工作_「华为手机维修自学教程」华为手机的开机触发电路 华为维修技巧...
- signature=f0dd2033ed5bb3cdb94f9136381f7750,Lesson 8: Signature Assignment