android AsyncTask实例
.java
- package com.example.activitydemoay;
- import android.app.Activity;
- import android.content.Intent;
- import android.os.AsyncTask;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.Button;
- import android.widget.ProgressBar;
- import android.widget.TextView;
- public class MainActivity extends Activity {
- Button download;
- ProgressBar pb;
- TextView tv;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- pb = (ProgressBar) findViewById(R.id.pb);
- tv = (TextView) findViewById(R.id.tv);
- download = (Button) findViewById(R.id.download);
- download.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- DownloadTask dTask = new DownloadTask();
- dTask.execute(100);
- }
- });
- }
- class DownloadTask extends AsyncTask<Integer, Integer, String> {
- // 后面尖括号内分别是参数(例子里是线程休息时间),进度(publishProgress用到),返回值 类型
- @Override
- protected void onPreExecute() {
- // 第一个执行方法
- super.onPreExecute();
- }
- @Override
- protected String doInBackground(Integer... params) {
- // 第二个执行方法,onPreExecute()执行完后执行
- for (int i = 0; i <= 100; i++) {
- pb.setProgress(i);
- publishProgress(i);
- try {
- Thread.sleep(params[0]);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- return "执行完毕";
- }
- @Override
- protected void onProgressUpdate(Integer... progress) {
- // 这个函数在doInBackground调用publishProgress时触发,虽然调用时只有一个参数
- // 但是这里取到的是一个数组,所以要用progesss[0]来取值
- // 第n个参数就用progress[n]来取值
- tv.setText(progress[0] + "%");
- super.onProgressUpdate(progress);
- }
- @Override
- protected void onPostExecute(String result) {
- // doInBackground返回时触发,换句话说,就是doInBackground执行完后触发
- // 这里的result就是上面doInBackground执行后的返回值,所以这里是"执行完毕"
- setTitle(result);
- Intent intent = new Intent();
- // Intent传递参数
- // intent.putExtra("TEST", "123");
- // intent.setClass(MainActivity.this, MainActivityB.class);
- // MainActivity.this.startActivity(intent);
- super.onPostExecute(result);
- }
- }
- }
.xml
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="Hello , Welcome to Andy's Blog!"/>
- <Button
- android:id="@+id/download"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="Download"/>
- <TextView
- android:id="@+id/tv"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="当前进度显示"/>
- <ProgressBar
- android:id="@+id/pb"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- style="?android:attr/progressBarStyleHorizontal"/>
- </LinearLayout>
android AsyncTask实例的更多相关文章
- Android学习笔记:多个AsyncTask实例的并发问题
AsyncTask是Android给开发者提供的一个简单轻量级的多线程类,通过它我们可以很容易新建一个线程让在后台做一些耗时的操作(如IO操作.网络访问等),并在这个过程中更新UI.之所以说它轻量级, ...
- Android AsyncTask 深度理解、简单封装、任务队列分析、自定义线程池
前言:由于最近在做SDK的功能,需要设计线程池.看了很多资料不知道从何开始着手,突然发现了AsyncTask有对线程池的封装,so,就拿它开刀,本文将从AsyncTask的基本用法,到简单的封装,再到 ...
- android AsyncTask介绍(转)
android AsyncTask介绍 AsyncTask和Handler对比 1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接 ...
- Android AsyncTask完全解析,带你从源码的角度彻底理解
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/11711405 我们都知道,Android UI是线程不安全的,如果想要在子线程里进 ...
- 为什么Android AsyncTask的使用要遵循五大原则
引言 AsyncTask是一个围绕Handler和Thread而设计的助手类,封装了在工作线程中与UI交互的细节,只需要对应重写几个回调方法即可,并使得代码更加简洁,优雅.但要注意的是AsyncTas ...
- android AsyncTask异步任务(笔记)
AsyncTask是一个专门用来处理后台进程与UI线程的工具.通过AsyncTask,我们可以非常方便的进行后台线程和UI线程之间的交流. 那么AsyncTask是如何工作的哪. AsyncTask拥 ...
- Android AsyncTask 源代码分析
AsyncTask源代码分析 public abstract class AsyncTask<Params, Progress, Result> { //日志TAG private sta ...
- Android -- AsyncTask 使用和缺陷
一.AsyncTask的基本用法 由于AsyncTask是一个抽象类,所以如果我们想使用它,就必须要创建一个子类去继承它.在继承时我们可以为AsyncTask类指定三个泛型参数,这三个参数的用途如下: ...
- [学习总结]7、Android AsyncTask完全解析,带你从源码的角度彻底理解
我们都知道,Android UI是线程不安全的,如果想要在子线程里进行UI操作,就需要借助Android的异步消息处理机制.之前我也写过了一篇文章从源码层面分析了Android的异步消息处理机制,感兴 ...
随机推荐
- C++析构函数调用异常问题研究
最近又遇到一个奇葩问题,程序在自己的开发机器和某些机器上运行完好,但是在测试人员的几台机器上运行就直接推出了.开始以为是出现了野指针,因为delete野指针时程序会直接退出.代码翻来覆去过来即便确认没 ...
- 接口测试之webservice
什么是Webservice Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和配 ...
- 初识Hibernate 缓存
生活就像一杯咖啡,让你我慢慢的品尝,品尝它的苦涩和甘甜...... 一.什么是Hibernate缓存. 解析:白话来说就是缓存数据的容器 官方标准点缓存:是计算机领域的概念,它介于应用程序和永久性数据 ...
- 前端mvc框架backbone.js入门
关于backbone.js的优缺点,这里就不详谈了,网上关于这方面的讨论很多了,而且各种框架之所以长久生存,通常都是有其特定优势和擅长点的. 使用backbone.js作为前端框架的应用通常都是htm ...
- Mac上安装go环境
Mac 安装 GO语言开发环境 官网:https://golang.org/ go语言的安装:http://docscn.studygolang.com/doc/install 下载:go1.7rc3 ...
- JavaScript解析URL参数
创建一个Js类: var Request = { QueryString: function (item) { var svalue = location.search.match(new RegEx ...
- 20款响应式的 HTML5 网页模板【免费下载】
下面的列表集合了20款响应式的 HTML5 网页模板,这些专业的模板能够让你的网站吸引很多的访客.除了好看的外观,HTML5 模板吸引大家的另一个原因是由于其响应性和流动性.赶紧来看看. 您可能感兴趣 ...
- Framer – 将视觉搞转换为更真实的动态原型
Framer 是一个 JavaScript 框架,简化了创建现实原型,实现完整的3D效果.以一种简单,可读的和强大的方式定义交互和创建动画. 另外还有 Framer Generator 是一个桌面应 ...
- GPS坐标互转:WGS-84(GPS)、GCJ-02(Google地图)、BD-09(百度地图)(转载)
WGS-84:是国际标准,GPS坐标(Google Earth使用.或者GPS模块)GCJ-02:中国坐标偏移标准,Google Map.高德.腾讯使用BD-09:百度坐标偏移标准,Baidu Map ...
- Oracle EXP-00091的解决方法
[sql] EXP-00091: 正在导出有问题的统计信息.www.2cto.com . . 正在导出表 WF_GENERAL导出了 EXP-00091: 正 ...