Android开发——子进程更新UI
方式一:Handler和Message
① 实例化一个Handler并重写handlerMessage()方法
private Handler handler = newHandler() {
public void handleMessage(Message msg) {
// 处理消息
super.handleMessage(msg);
switch (msg.what) {
case 1:
button1.setText("点击安装");
break;
case 2:
button1.setText("打开");
break;
}
};
};
② 在子线程中获取或创建消息,并使用handler对象发送
Message msg = handler.obtainMessage(); msg.what = 1; handler.sendMessage(msg);
方式二:在子线程中直接调用Activity.runOnUiThread(Runnable action)方法
runOnUiThread(new Runnable() {
@Override
public void run() {
// 更新UI的操作
}
});
方式三:在子线程中调用View的post()方法
myTextView.post(new Runnable() {
@Override
public void run() {
// 更新UI
myView.setText(“更新UI”);
}});
方式四:在子线程中调用View.PostDelayed(Runnabe,long)
方式五:Handler的post()方法
① 创建一个Handler成员变量
private Handler handler = new Handler();
② 在子线程中调动post()方法
handler.post(new Runnable() {
@Override
public void run() {
// 更新UI
myView.setText(“更新UI”);
}});
方式六:AsyncTask
private class DownloadFilesTask extends AsyncTask<URL, Integer, Long>
//在这里声明了Params、Progress、Result参数的类型
{
//因为这里不需要使用onPreExecute回调方法,所以就没有加入该方法
//后台线程的目的是更具URL下载数据
protected Long doInBackground(URL... urls) {
int count = urls.length;//urls是数组,不止一个下载链接
long totalSize = 0;//下载的数据
for (int i = 0; i < count; i++) {
//Download是用于下载的一个类,和AsyncTask无关,大家可以忽略他的实现
totalSize += Downloader.downloadFile(urls[i]);
publishProgress((int) ((i / (float) count) * ));//更新下载的进度
// Escape early if cancel() is called
if (isCancelled()) break;
}
return totalSize;
}
//更新下载进度
protected void onProgressUpdate(Integer... progress) {
setProgressPercent(progress[0]);
}
//将下载的数据更新到UI线程
protected void onPostExecute(Long result) {
showDialog("Downloaded " + result + " bytes");
}
}
Android开发——子进程更新UI的更多相关文章
- 50个Android开发人员必备UI效果源码[转载]
50个Android开发人员必备UI效果源码[转载] http://blog.csdn.net/qq1059458376/article/details/8145497 Android 仿微信之主页面 ...
- Android子线程更新UI成功
android子线程更新UI成功 今天在写demo的时候,在子线程中更新UI,发现更新成功,记录一下. protected void onCreate(Bundle savedInstanceStat ...
- Android子线程更新UI主线程方法之Handler
背景: 我们开发应用程序的时候,处于线程安全的原因子线程通常是不能直接更新主线程(UI线程)中的UI元素的,那么在Android开发中有几种方法解决这个问题,其中方法之一就是利用Handler处理的. ...
- Android子线程更新UI的方法总结
版权声明:本文为博主原创文章,转载请注明出处:https://i.cnblogs.com/EditPosts.aspx?postid=6121280 消息机制,对于Android开发者来说,应该是非常 ...
- android 子线程更新UI
参考http://examples.javacodegeeks.com/android/core/os/handler/android-handler-example/package com.exam ...
- Android 访问 Webapi 更新UI
首先,写一个访问webapi的工具类 import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import or ...
- android子线程更新UI
参考:https://www.cnblogs.com/joy99/p/6121280.html 子线程是不能直接更新UI的.Android实现View更新有两组方法,分别是invalidate和pos ...
- Android 子线程更新UI 异常
众所周知,Android是不可以在子线程中直接更新UI的,需要借助Handler或者View.post(Runnable runnable)或者runOnUIThread(Runnable runna ...
- android四种更新UI的方法
笔记: // 使用handler.post(Runnable)更新UI public void updateUI_Fun1() { new Thread() { public void run() { ...
随机推荐
- RTMPdump(libRTMP) 源代码分析 7: 建立一个流媒体连接 (NetStream部分 2)
===================================================== RTMPdump(libRTMP) 源代码分析系列文章: RTMPdump 源代码分析 1: ...
- Volley网络框架完全解析(实战篇)
好了,今天就通过一个瀑布流demo,来使用Volley框架请求网络图片. 前言: 我们使用NetworkImageView显示图片: 1.因为该控件可以自动的管理好请求的生命周期,当与父控件detac ...
- 2010-01-20 12:09 ubuntu下minicom的安装及使用
转http://hi.baidu.com/npugtawqdnbgqrq/item/106f805409b42813db163527 ubuntu下minicom的安装及使用 安装: sudo apt ...
- 【Nginx】下载,请求限速,根据URL参数限速
这个场景是限制单个连接的下载速度,还有限制单个IP的连接数,或者单位时间内的请求数,实验环境 nginx1.9.x. 小例子为主,具体的细节请多看文档. 限制下载速度 location /downlo ...
- IT咨询顾问:一次吐血的项目救火
年后的一个合作公司上线了一个子业务系统,对接公司内部的单点系统.我收到该公司的技术咨询:项目启动后没有规律的突然无法登录了,重新启动后,登录一断时间后又无法重新登录,对方技术人员一头雾水不知道什么原因 ...
- 安装centOS后要解决的问题
1,检查是否联网 ping www.baidu.com 未显示: 则表示网络未连接 首先关闭防火墙 sudo systemctl stop firewalld.service #停止firewall ...
- react中需要用到【深度复制】的问题
首先,说一下我所遇到的问题,我所做的项目是用的基于react的antd框架. 一张表格,里面的数据是从后台获取直接渲染,我点击修改按钮,在modal弹框中修改数据,但是没有点击确定,点击取消,发现页面 ...
- 修改访问的后缀contant
设置Struts 2处理的请求后缀及Action调用 1.在struts2中默认处理的请求后缀为action,我们可以修改struts.xml 和struts.properties来修改默认的配置,在 ...
- 与班尼特·胡迪一起做生意 (HZUN-2261)
与班尼特·胡迪一起做生意 AC Time Limit: 1 s Memory Limit: 256 MB Description 马爷作为2-80X的资深土财主,靠着敏锐的商业嗅觉不断 ...
- 【也许CTO并不是终点开篇】CTO也只不过是CTO罢了
不想做将军的士兵不是好士兵,这句话可以有很功利的理解方式,对应到我们自己很可能是:不想做CTO的程序员不是好程序员!几年前对这句话的理解与现在有很多不同,因为我现在已经是一名中小型公司的CTO了,这句 ...