07 总结ProgressDialog 异步任务
1,ProgressDialog
> //使用对象 设置标题
progressDialog.setTitle("标题");
//设置图标
progressDialog.setIcon(R.drawable.ic_launcher);
//设置展示的内容
progressDialog.setMessage("正在下载请稍等....");
//设置样式
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
//展示
progressDialog.show();
2,UI线程和工作线程
>Ui线程也是Main线程 负责会在UI界面和事件分发
俩个主要要素:
>1,在Ui线程不能做阻塞操作 (在主线程阻塞超过5s程序出错 "程序无反应")
>2,在主线程以外的线程(子线程)不能更新UI
3, 什么是异步任务
>在子线程做耗时操作 将结果回调到主线程
4, 为什么要使用异步任务
>1,在Ui线程不能做阻塞操作 (在主线程阻塞超过5s程序出错 "程序无反应") 4.0以后 不允许在主线程下载
>2,在主线程以外的线程(子线程)不能更新UI
* 1,创建一个类 继承AsyncTask,同时声明三个参数
* Params:子线程执行方法里参数类型
* Progress;子线程执行任务的进度类型 如果不想展示进度 Void
* Result:子线程执行任务的结果类型
*
* 2,实现核心方法
* doInBackground(String... params){}
*
* onPostExecute(byte[] result)
*
* 3,在主线程中执行异步请求
>完整的AsyncTask
public class MyAsyncTask extends AsyncTask<String, Integer, List<String>>{
/**
* 在首次执行异步任务时 调用此方法 做初始化操作
*/
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
}
/**
* 在子线程中执行 做耗时操作
*/
@Override
protected List<String> doInBackground(String... params) {
// TODO Auto-generated method stub
//publishProgress(values)
return null;
}
/**
* 更新进度的方法 在doInBackground中 执行publishProgress(values) 将进度值发送给onProgressUpdate
*/
@Override
protected void onProgressUpdate(Integer... values) {
// TODO Auto-generated method stub
super.onProgressUpdate(values);
}
/**
* 在主线程中更新UI 在执行完doInBackground之后执行 onPostExecute
*/
@Override
protected void onPostExecute(List<String> result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
}
//点击其他按钮 取消AsyncTask时 执行此方法
@Override
protected void onCancelled(List<String> result) {
// TODO Auto-generated method stub
super.onCancelled(result);
}
}
5, 设置View的显示与隐藏
>visibility=""
>gone: 隐藏 不占空间
>visible 显示
>invisible 隐藏 占空间
>setVisibility()
>View.GONE
>View.VISIBLE
>View.INVISIBLE
6, AsyncTask注意事项:
>1,AsyncTask实例只能调用一次
>2,必须在Ui线程得到AsyncTask对象
>3,AsyncTask方法 系统自动调用
>4,数据进行交互(子线程和主线程交互)AsyncTask,否则开启一个线程就行
>5,异步任务必须在UI线程启动
07 总结ProgressDialog 异步任务的更多相关文章
- Nodejs之路:异步I/O的过程
对于Node中的异步I/O调用,从发出调用到回调执行,看起来像普通的js异步,但是流程却和普通js那些消息队列完全不同,整个过程经历了哪些? 下面以Windows平台下为例: 一,异步调用第一阶段: ...
- File API 读取文件小结
简单地说,File API只规定怎样从硬盘上提取文件,然后交给在网页中运行的JavaScript代码. 与以往文件上传不一样,File API不是为了向服务器提交文件设计的. 关于File API不能 ...
- android的progressDialog 的使用。android数据异步加载 对话框提示
在调用的Activity中定义一个全局的 progressDialog 点击按钮的时候调用下面这句 progressDialog = ProgressDialog.show(SearchActivit ...
- C# Socket的TCP通讯 异步 (2015-11-07 10:07:19)转载▼
异步 相对于同步,异步中的连接,接收和发送数据的方法都不一样,都有一个回调函数,就是即使不能连接或者接收不到数据,程序还是会一直执行下去,如果连接上了或者接到数据,程序会回到这个回调函数的地方重新往下 ...
- 07 ProgressDialog
<span style="font-size:18px;">package com.fmy.example1; import android.app.Activity; ...
- NoHttp封装--07 自定义异步任务框架
MainActivity: public class MainActivity extends Activity implements View.OnClickListener { .... @Ove ...
- Java基础知识强化之多线程笔记07:同步、异步、阻塞式、非阻塞式 的联系与区别
1. 同步: 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回.但是一旦调用返回,就必须先得到返回值了. 换句话话说,调用者主动等待这个"调用"的结果. 对于 ...
- 异步消息处理机制Handler
Android 中的异步消息处理主要由四个部分组成,Message.Handler.MessageQueue 和Looper. 1. Message Message 是在线程之间传递的消息,它可以在内 ...
- 异步编程 In .NET
概述 在之前写的一篇关于async和await的前世今生的文章之后,大家似乎在async和await提高网站处理能力方面还有一些疑问,博客园本身也做了不少的尝试.今天我们再来回答一下这个问题,同时我们 ...
随机推荐
- hdu 2888 二维RMQ模板题
Check Corners Time Limit: 2000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- [bzoj1143][CTSC2008]祭祀
题意:给定一个n个点m条边的有向无环图,你要选出最多的点,并且满足任意两点之间都不存在通路.2)输出每个点选了它之后还是否有最优解. n<=100 m<=1000 题解:每个点拆两个点 ...
- java的泛型
泛型概述 先看下面的代码: ArrayList al1 = new ArrayList(); ArrayList al2 = new ArrayList(); al1.add("hello& ...
- SpringMVC 教程 - URI 链接
原文链接:https://www.codemore.top/cates/Backend/post/2018-04-22/spring-mvc-uri-links 这一节主要讲的是Spring Fram ...
- compress函数用法详解
compress函数: 主要用来删除字符串中的特定字符. 1.compress函数的基本形式compress(<source><, chars><, modifiers& ...
- Spring错误之org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'bookService' is expected to be of type 'pw.fengya.tx.BookService' but was actually of type 'com.sun.proxy.$Proxy1
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'cas ...
- Node.js 字符串解码器
稳定性: 3 - 稳定 通过 require('string_decoder') ,可以使用这个模块.字符串解码器(StringDecoder)将缓存(buffer)解码为字符串.这是 buffer. ...
- Node.js 工具模块
在 Node.js 模块库中有很多好用的模块.接下来我们为大家介绍几种常用模块的使用: 序号 模块名 & 描述 1 OS 模块 提供基本的系统操作函数. 2 Path 模块提供了处理和转换文件 ...
- webpack2 配置 示例
// https://github.com/webpack-contrib/extract-text-webpack-plugin var webpack = require("webpac ...
- git清空某个文件的历史版本
比如你要清空文件private.ini git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch priva ...