linux安卓主线程同步,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
{
s+=tmp[i]+"\n";
}
tv.setText(s);
curi=i;
}};
readThread.start();
ReadListener updateThread=new ReadListener();
mHandler=new Handler();
updateThread.start();
}
}
linux安卓主线程同步,Android解决:使用多线程和Handler同步更新UI相关推荐
- 麻辣烫与安卓主线程工作原理
文章目录 前言 一碗麻辣烫 Active Object 设计模式 Active Object Active Object 模式的优势 安卓主线程工作原理 总结 参考文章 前言 首先,我们先去点一碗麻辣 ...
- android 主线程调用,Android 主线程和线程之间相互发送消息
通过分析Activity源码,我们知道每个Activity都有一个Looper,所以主线程在接收Message是不需要调用Looper.prepare()和Looper.loop(),但是线程是不带L ...
- linux安卓手机文件夹,Android系统的手机文件夹目录详解
一.文件夹 1./acct/ 系统回收站,删除的系统文件. 2./cache/ 缓存 3./data/ 用户的所有程序相关数据 app/ 所有用户安装的apk文件 app-private/ data/ ...
- android handler同步,android解决:使用多线程和Handler同步更新UI
如果运行时,可以看到滚动条由条慢慢变短,则说明程序成功了.截图如下,建议选择大点的文件做测试. main.xml xmlns:android="http://schemas.android. ...
- Android下的多线程下Handler的使用
在Android下面也有多线程的概念,在C/C++中,子线程可以是一个函数,一般都是一个带有循环的函数,来处理某些数据,优先线程只是一个复杂的运算过程,所以可能不需要while循环,运算完成,函数结束 ...
- java数据同步处理_Java如何处理多线程的数据同步问题
在这里写这种文章好奇怪,先用作笔记吧 Java中有如下的方法来处理代码块的并发访问问题: 一是关键字synchronized 二是加锁(锁对象,条件对象) Java给每一个对象都提供了一个内部锁,在方 ...
- android 动态文本选取,android-用动态文本更新UI
我会使用处理程序. private static final int WHAT = 1; private static final int TIME_TO_WAIT = 5000; Handler r ...
- Android Handler主线程和一般线程通信的应用分析
Handler的定义:主要接受子线程发送的数据, 并用此数据配合主线程更新UI. 解释: 当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI控件,进 ...
- Handler-接受子线程数据更新UI主线程;非主线程通信--HandlerThread
一.定义 主要接受子线程发送的数据, 并用此数据配合主线程更新UI. 解释: 当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI ...
最新文章
- 俄罗斯自研Elbrus CPU参数曝光,CEO年近九旬仍未退休
- 刘启成_使用if及变量编写LAMP管理脚本
- 贼好用的 Java 工具类库,GitHub 星标 10k+,你在用吗?
- 北邮OJ 980. 16校赛-R_clover's Challenge
- 视频专辑:Hibernate 视频
- Yaf框架视频教程之入门篇【已完成】
- Java 算法 最大体积
- lua 差值 日期_Lua获取系统时间和时间格式化方法及格式化参数
- javascript 未来新方法的介绍
- python画素描画_画画了,画画了,几行Python就成一幅素描画
- html5+前端脸部识别采集,前端人脸识别框架Tracking.js
- JAVA小项目--商品管理系统
- GB/T 28448-2019 《信息安全技术 网络安全等级保护测评要求》之安全通信网络测评解读
- 微信公众号迁移公证办理流程
- TF卡和SD卡的区别
- dedeCMS采集插件自动采集文章自定义接口
- 单片机八灯交替闪烁c语言代码,单片机闪烁灯汇编语言源代码大全(四款闪烁灯的汇编语言源代码)...
- oracle招聘ocp认证,OracleOCP认证要通过哪些考试?
- 游戏脚本开发思路总结
- 三菱FX系列DPLSY指令使用