Android解决:使用多线程和Handler同步更新UI

Handler--更新UI的方法,android设计模式总结 解决办法:加上 postInvalidate() 方法。 @Override protected void onRestart() { super.onRestart(); /onRestart中开启新线程,更新UI/ Thread thread = new Thread(new Runnable() { @Override public void run() { System.out.println(Thread.currentThread().getName() + ": " + Thread.curr 阅读详情

看代码:

1.main.xml布局文件;

<?xml version="1.0" encoding="utf-8"?>
<ScrollView 
xmlns:Android="http://schemas.android.com/apk/res/android"
Android:layout_height="wrap_content" android:id="@+id/scrollView1" android:layout_width="fill_parent">
    <LinearLayout Android:id="@+id/linearLayout1" 
    Android:orientation="vertical"    
    Android:layout_width="fill_parent" 
    Android:layout_height="wrap_content"> 
<TextView  
Android:id="@+id/tv"
    Android:layout_width="fill_parent" 
    Android:layout_height="wrap_content"    
    />
    </LinearLayout>
</ScrollView>


2.FileRead.java

public class FileRead {
boolean readend=false;
List<String> al=null;
public  class ReadNodesThread extends Thread{//读取线程

public void run() 
{
al=new ArrayList<String>(100);
al.clear();
readend=false;
int i=0;
try {
RandomAccessFile raf=new RandomAccessFile("/sdcard/test.txt","r");
//try {
while(raf.getFilePointer()<raf.length())
{
al.add(raf.readLine());
//sleep(100);//如果测试文件太小,这里休眠是为了测试,
}

} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
readend=true;
}
};
}

3.MutilThreadActivity.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<tmp.length;i++)
{
s+=tmp[i]+"\n";
}
tv.setText(s);
curi=i;
}};
readThread.start();
ReadListener updateThread=new ReadListener();
mHandler=new Handler();
updateThread.start();
}
}


固件测试工具选型需要考察的功能点汇总 通过专业的固件测试工具可以帮助我们提高测试效率、提升测试的覆盖度、确保测试的准确性,保障产品的安全和质量。本文我们讲固件测试工具的功能点进行梳理和汇总,方便大家在采购固件测试工具时进行选型比对。 阅读详情

相关推荐

MATLAB不能识别已安装的visual studio 2015解决方法

首先,对于MATLAB识别已经安装的vs版本通过命令: mex -setup 下图为本电脑下同时安装的两个visual studio 如果搞清楚MATLAB识别电脑上安装vs的过程,可通过命令: mex -setup -v MATLAB输出识别编译器的整个过程。其中HKLM和HKCU分别是注册表中的HKEY_CURRENT_USER,HKEY_LOCAL_MA…的缩写,MATLAB没有找到对应编译器是由于注册表里没有对应信息(主要是文件路径,C++编译器的路径),或者在注册表里存在该信息,但是找不到

qq_36320710的博客 4895

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

如果运行时,可以看到滚动条由条慢慢变短,则说明程序成功了。截图如下,建议选择大点的文件做测试。 main.xmlxmlns:Android="http://schemas.android.com/apk/res/android"android:layout_height="wrap_content" android:id="@+id/scrollView1" android:layout_wi...

weixin_39986973的博客 81

强化学习_06_pytorch-TD3实践(BipedalWalkerHardcore-v3)

DDPG的critic会高估, 从而导致actor策略失败。TD3是增加了三个关键技巧优化DDPG。经过优化后的TD3(Twin Dalayed DDPG 双延迟深度确定性策略梯度算法)适合于具有高维连续动作空间的任务。

RL小站 2689

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

如果运行时,可以看到滚动条由条慢慢变短,则说明程序成功了。截图如下,建议选择大点的文件做测试。 main.xmlxmlns:android="http://schemas.android.com/apk/res/android"android:layout_height="wrap_content" android:id="@+id/scrollView1" android:layout_w...

weixin_29370183的博客 255

AI编程工具选哪个更高效?开发者深度评测

无论是代码生成、错误修复,还是架构设计,AI都能提供强大的辅助能力。然而,市面上AI编程工具众多,如何选择最适合自己的?本文将从代码质量、响应速度、多语言支持、集成能力等多个维度,为你解析2025年最主流的几款AI编程工具,帮助你做出更高效的选择。根据2025年最新调研数据,全球超过85%的开发者正在使用AI编程工具辅助开发,相比2023年增长了近40%。合理利用AI,能让你的开发效率提升数倍,但真正的核心竞争力,仍然在于你的编程思维和解决问题的能力。:技术较强的开发者、重视数据隐私的企业。

1853

全面解读AI Infra:架构、生态与未来趋势

文章摘要 大模型时代下,AI基础设施(AI Infra)成为关键技术基建,涵盖从数据准备到模型服务的全栈技术体系。文章系统解构了AI Infra的四层架构(硬件资源层、资源管理调度层、开发框架层、平台工具层),并分析了全球AI Infra生态图谱,包括云计算巨头、芯片厂商等全栈服务商,以及中国特色的多元竞合格局。通过对比Data Infra与AI Infra的核心差异,指出AI Infra更关注智能应用的规模化与自动化。文章还探讨了从传统数据设施向AI基础设施的转型路径,强调自主可控、软硬协同等发展趋势,为

技术引领业务创新 610

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

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

power的专栏 4287

深入浅出:使用Python爬取链家二手房数据

在数据驱动的时代,房地产数据作为社会经济的重要指标,一直是数据分析师、投资者和研究人员关注的焦点。链家作为国内领先的房产中介平台,其二手房数据具有较高的真实性和时效性。然而,官方API的访问限制和数据获取的门槛,让很多初学者望而却步。本文将带你从零开始,使用Python编写一个符合robots.txt规范的链家二手房爬虫,获取标题、户型、价格等信息。文章不仅会提供完整代码,还会深入讲解反爬策略、请求头伪装、数据解析、异常处理等实战技术。目录前言:为什么要写这篇博客?一、爬虫前的准备:法律与道德。

2201_76125261的博客 90

android子线程中更新UI的方法

在Android项目中经常有碰到这样的问题,在子线程中完成耗时操作之后要更新UI,下面就自己经历的一些项目总结一下更新的方法: 参考:Android子线程 方法一:用Handler 1、主线程中定义Handler: Handler mHandler = new Handler() { @Override public void handleMessage(Messag

在水一方 8980

Oracle EBS R12 主 / 辅助分类帐(主 / 辅助帐套)落地

本文提供了Oracle EBS R12主/辅助分类帐实施的全套文档模板,包含主帐套(法定帐套)和辅助帐套的完整配置清单、科目映射规则模板、4类典型调整分录示例(存货跌价、折旧差异、往来重分类、外币折算)以及税会/IFRS案例分录。重点阐述了主/辅助帐套的配置要点、SLA子分类帐关键配置、科目映射规则(一对一、多对一、重分类等类型)以及调整分录的自动生成逻辑。文档可直接用于项目实施,包含总体架构图、科目映射矩阵表、会计规则集配置等交付物,并附有Excel版模板便于直接使用。适用于需要实现多准则并行记账、税务调

金牌架构师 386

前拉后推计划逻辑适用于哪些行业和企业规模?

《前拉后推计划逻辑的行业适用性分析》摘要:前拉后推计划逻辑(需求端后推锚定交付、供应端前拉匹配资源)最适用于需求波动大且具规模效益的行业,包括家具制造(定制化需求+批量运输)、机械装备(非标设备+部件采购)、消费电子(短周期产品+核心部件备货)及汽车配套(交期绑定+批量生产)等领域。该模式要求企业具备:1)独立计划部门;2)ERP/MES等信息系统;3)资源冗余能力,故更适配中型(1-10亿营收)和大型企业(10亿+)。小型企业需简化应用,仅聚焦关键环节。不适配需求稳定(如快消品)、无规模效益或短周期生产的

追随内心 144

android使用线程计时器,计时器的Android线程

小编典典在你的情况下,你正在使用线程。因此,你无法从ui线程以外的其他线程更新ui。所以你用runOnUithread。我建议你使用倒数计时器或处理程序。1.CountDownTimer这是另一个示例的链接。建议你检查倒计时计时器的链接。倒数计时器,以分钟和秒为单位例:public class MainActivity extends Activity {Button b;TextView tv;...

weixin_30523059的博客 333

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Handler: 更新UI的方法

总是感觉 android 中 UI 更新很让人纠结!自己小结一下,算是抛砖引玉。 读这篇文章之前,假设你已经明白线程、Handler 的使用。 在文章的最后,附录一张草图,主要用于说明 Handler、Message、MessageQueue、Looper 之间的关系。 1. 在 onCreate() 方法中开启线程更新 UI public class MasterActivity ex...

CodingMan 4万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Android :安卓学习笔记之 Handler机制 的简单理解和使用

Android Handler机制的简单理解和使用1、Handler使用引出2、背景和定义3、作用4、相关概念5、工作流程5.1、对应关系6、基本使用7、参考 1、Handler使用引出 现在作为客户,有这样一个需求,当打开Activity界面时,开始倒计时,倒计时结束后跳转新的界面(思维活跃的朋友可能立马想到如果打开后自动倒计时,就类似于各个APP的欢迎闪屏页面),如下图: 可能觉得直接开启一个包含倒序循环的子线程就ok了,具体实现如下: activity_main <?xml version="

JMW1407的博客 6775

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Android多线程UI更新-Handler

Handler+多线程UI更新

安卓开发&音视频开发 3万+

Android的Handler的简单理解和使用

简单来说,Handler就是用来传递消息的。 Handler可以当成子线程与主线程的消息传送的纽带。在安卓开发中,在子线程中无法刷新UI,是因为UI在子线程中刷新的话,是不安全的,就比如多个线程刷新UI,会造成UI更新冲突,这样是不安全的。 所以,Handler的作用就来了,子线程可以通过Handler来将UI更新操作切换到主线程中执行。 下面来操作一番: public class Ma...

宇某的博客 3万+

Android多线程:Handler runOnUiThread 异步消息处理机制

Android用户界面是与用户交互的接口,对于用户的操作,Android迅速响应用户输入(200ms内)是一个重要目标。因此,一些耗时操作(如:后台下载,异步加载图片等)需要放在子线程中运行,否则会导致主线程阻塞。

IH_LZH的博客 3512

Android中使用Handler机制更新UI的三种解决方案

最近想把学习Android过程中的Handler使用经验写下来,供自己以后查看,也与大家一起分享。        使用Handler其实不得不与Android中的线程或者说Java中的多线程扯上关系。本篇文章只会用到最基本的线程使用,不会涉及太难的,关于Android的线程我们以后再讨论。在Android中每新建一个Activity,该Activity(理解为界面)就是一个线程,是一个主线程,也

乞力马扎罗的雪CYF的博客 1万+

Android中的多线程开发(UI更新、Handler使用)

Android 多线程开发 1. 线程概念 1.1 进程概念 一般来说,可以在同一时间内执行多个程序的操作系统都有进程的概念。一个进程就是一个执行的程序,而每一个进程都有自己独立的一块内存空间、一组系统资源。在进程的概念中每一个进程内部数据状态都是完全独立的。 1.2 线程概念 多线程指的是在单个程序中可以同时运行多个不同的线程,执行不同的任务。线程与进程相似,是一段完成某个特定功能的代码,是程序中单个顺序的流控制。但与进程不同的是,同类型的多个线程是共享一块内存空间和一组系统资源。所以,多个线程之间切换时

weixin_47323733的博客 2172

Android多线程中使用Handler更新ListView控件数据

在Android应用开发中,免不了涉及耗时的操作,比如网络数据更新等。如果直接在主线程中完成,不给出适当的提示信息,则长时间的等待会给用户一个错觉:程序死了!所以,针对耗时的操作,使用多线程操作结合ProgressDialog进度条对话框来实现就显得非常的必要了。   假设MainActivity中有一个名为list的ListView布局,点击按钮后执行DownloadData() 方法开始下

frdde的专栏 7997

Android Handler使用介绍

Android 中的 Handler 是用来和线程通信的重要工具。它主要用于在后台线程中执行任务,并将结果传递回主线程以更新用户界面。

小旭的专栏 3602

Android 多线程之 Handler 基本使用

Handler系列—基本使用 前言 Handler 使用 1、使用 Handler 的 post() 方法更新 UI 2、使用 Handler 的 sendMessage() 方法更新 UI 3、使用 runOnUiThread() 方法更新 UI 4、使用 View 的 post() 方法更新 UI 5、子线程中创建 Handler(handler1)发送消息,在子线程中的Handler(h...

Sean_css的博客 4244

Android Handler使用详解

Handler负责发送消息,Looper负责接收Handler发送的消息,并直接把消息回传给handler自己,MessageQueue就是一个存储消息的容器。

小旭的专栏 7667

Handler--更新UI的方法

答应大伙的备战金三银四,大厂面试真题来啦!这份资料我从春招开始,就会将各博客、论坛。网站上等优质的Android开发中高级面试题收集起来,然后全网寻找最优的解答方案。每一道面试题都是百分百的大厂面经真题+最优解答。包知识脉络 + 诸多细节。节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。《960全网最全Android开发笔记》《379页Android开发面试宝典》包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。

2401_84123188的博客 1254
上一篇: 修改ListView 分割线Seperator line
下一篇: 定义自己的Adapter 显示想要的组件
慕广陵
博客等级 码龄17年 3粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值