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() { ...
随机推荐
- Developing User Interfaces
Developing a User Interface with ADF Faces Purpose This tutorial covers developing the user interf ...
- linux下用gtk+写比赛赌博GUI小游戏
游戏界面全部由gtk的GUI完成,没有使用openGL之类的高端货. 游戏玩法就是8位选手比赛跑步,你可以在赛前赌哪位选手会赢,如果输了cash会被扣除,反之cash会增加. 无聊写了3个选项:小数时 ...
- Android adb基本命令-cd,ls,目录相关命令
cd的命令 cd -:代表进入家目录,普通用户是/home/用户名,root用户是/root目录,-是家目录的代表 cd /:这是进入根目录,/是根目录的代表 cd .. :是返回上一级的目录 cd ...
- 客户全局信用控制&非全局信用控制
看个简单的例子 客户信用限额 非全局信用控制 非全局信用控制比较简单,我们看一下全局信用控制 设置: 实现结果:全局&非全局对比
- LeetCode(50)-Word Pattern
题目: Given a pattern and a string str, find if str follows the same pattern. Here follow means a full ...
- orale中如何获取当前月份?
就本人所知,在oracle中,有两种方式可以提取系统的当前月份: 1.使用extract 函数,具体用法看SQL语句: select extract(month from sysdate) as &q ...
- nodejs--(一)http模板篇
Nodejs http模块可以创建服务器应用实例,也能发送http请求 1.http.get(options[, callback]) 发送简单Get请求,并响应 var http=require(' ...
- Core Animation简介
一.Core Animation简介 * Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍.也就是说,使用少量的代 ...
- JavaScript中对象数组 根据某个属性值进行排序
将下列对象数组,通过工资属性,由高到低排序 var BaiduUsers = [], WechatUsers = []; var User = function(id, name, phone, ge ...
- 这就是我想要的 VSCode 插件!
简评:VSCode 是一个开源的跨平台编辑器,是我最满意的 IDE 之一.本文介绍了几种使用的插件,确实解决了很多的痛点. Quokka.js Quokka.js 会在您键入代码编辑器中显示各种执行结 ...