031 Android 异步任务(AsyncTask)
1.介绍

AsyncTask(了解即可),重点掌握Handler+Thread
2.实现方法

3.执行步骤

4.java后台
package com.lucky.test36asynctask; import android.annotation.SuppressLint;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView; public class MainActivity extends AppCompatActivity {
Button button1;
TextView textView;
ProgressDialog progressDialog; //定义一个进度对话框
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1=findViewById(R.id.button);
textView=findViewById(R.id.textview);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyAsyncTask myAsyncTask=new MyAsyncTask(MainActivity.this);
myAsyncTask.execute(new Integer(0));
}
});
} @SuppressLint("StaticFieldLeak")
private class MyAsyncTask extends AsyncTask<Integer,Integer,String>{
public Context context1;
//构造方法
public MyAsyncTask(Context context){
this.context1=context;
} //在异步任务执行之前执行的操作
@Override
protected void onPreExecute() {
progressDialog=new ProgressDialog(context1); //实例化进度对话框
progressDialog.setIcon(R.mipmap.ic_launcher); //设置图标
progressDialog.setTitle("提示"); //设置标题
progressDialog.setMessage("任务正在进行"); //设置内容
progressDialog.setMax(100); //设置进度条的最大值
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); //设置进度对话框的样式
progressDialog.show(); //显示进度对话框 } //执行耗时任务
@Override
protected String doInBackground(Integer... integers) {
int i=integers[0];
for (int j = i; j <100 ; j++) {
publishProgress(j); //发布进度值到更新任务
try {
Thread.sleep(100); //延时0.1s
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return "任务已经完成";
} //任务结束后执行的任务
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
progressDialog.dismiss();//关闭进度对话框
textView.setText(s); //注意:s来自于doInBackground执行完成后的return返回值
} //更新任务
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
progressDialog.setProgress(values[0]); //接收doInBackground发布的进度值,更新进度值
}
}
}
5.效果图
对应的工程名:test36

031 Android 异步任务(AsyncTask)的更多相关文章
- Android备注26.Android异步任务(AsyncTask)
转载请表明出处:http://blog.csdn.net/u012637501(嵌入式_小J的天空) 一.引言 我们知道Android的UI线程主要负责处理用户的按键事件.用户触屏事件及屏幕画 ...
- Android异步任务AsyncTask
package com.example.asynctask; import java.net.MalformedURLException; import java.net.URL; import an ...
- Android 异步任务——AsyncTask (附使用AsyncTask下载图片Demo)
我们编程的时候经常需要处理同步任务和异步任务,在Android里面存在一个特性,就是UI线程是不安全的线程.所谓UI线程不安全也就是我们的主线程(进程启动的第一个线程)不能在线程外操作主线程的资源.因 ...
- android:异步任务asyncTask介绍及异步任务下载图片(带进度条)
为什么要用异步任务? 在android中仅仅有在主线程才干对ui进行更新操作.而其他线程不能直接对ui进行操作 android本身是一个多线程的操作系统,我们不能把全部的操作都放在主线程中操作 .比方 ...
- android异步任务asyncTask详细分析
android中的耗时操作需要放在子线程中去执行 asynctask是对Handler和和线程池的封装,直接使用比THread效率更加的高效因为封装了线程池,比我们每次直接new Thread效率更高 ...
- Android异步载入AsyncTask具体解释
曾看见有人说过.认为非常有道理.分享一下: 技术分为术和道两种: (1)具体做事的方法是术. (2)做事的原理和原则是道. 近期项目发现个重大问题.结果打log跟踪查是AsyncTask导 ...
- [Android]异步任务AsyncTask使用解析
AsyncTask主要用来更新UI线程,比较耗时的操作可以在AsyncTask中使用. AsyncTask是个抽象类,使用时需要继承这个类,然后调用execute()方法.注意继承时需要设定三个泛型P ...
- Java基础知识强化之网络编程笔记15:Android网络通信之 Android异步任务处理(AsyncTask使用)
AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的 ...
- Android 之异步任务(AsyncTask,Handler,Message,looper)
AsyncTask: 3个类型(Params,Progress和Result),4个步骤(onPreExecute(),doInBackground(Params…),onProgressUpdate ...
随机推荐
- nodejs 日志框架winston笔记
winston是一款nodejs的日志库,本文以2.1.1版本为例,介绍一下使用方法. 1.基础用法 引用日志库,返回的是一个对象.包含一些构造器,实例方法. 其中transports是日志输出方式. ...
- 比较实用的Java工具类
一. org.apache.commons.io.IOUtils closeQuietly:关闭一个IO流.socket.或者selector且不抛出异常,通常放在finally块 toString: ...
- 中山纪中集训Day2又是测试(划水)
A组T1 bzoj 2674 Attack Description chnlich 非常喜欢玩三国志这款游戏,并喜欢用一些策略出奇制胜.现在,他要开始征服世界的旅途了.他的敌人有N 座城市和N 个太守 ...
- 使用ListView应该注意的地方
android:clipToPadding和android:clipChildren http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/201 ...
- js中引入js
第一个js文件(被引入的js文件),文件名one.js,内容如下 function alertInOne(){ alert('in one');} 第二个js文件,文件名two.js,内容如下 ...
- mapreduce入门程序之---wordcount
mapreduce是hadoop生态中非常重要的一部分,顾名思义,主要分为两部分,map和reduce,他们各司其职,map的主要功能是用来对待处理的文档进行处理,主要是对数据进行按行读取,分割,然后 ...
- vs2017 编译linux项目
官方文档1: https://blogs.msdn.microsoft.com/vcblog/2017/04/11/linux-development-with-c-in-visual-studio/ ...
- Vue 中Axios 使用
1.安装axios npm install axios 2.在使用的地方导入 import axios from 'axios' 3.再方法中调用 sendHttp: function () { ax ...
- 对pdf中的图片进行自动识别
对pdf中的图片进行自动识别 商务合作,科技咨询,版权转让:向日葵,135—4855__4328,xiexiaokui#qq.com 原理:增强扫描 效果:自动识别所有图片中的文字,可以选择.复制,进 ...
- php redis set 单机锁(转)
如果一个请求更新缓存的时间比较长,甚至比锁的有效期还要长,导致在缓存更新过程中,锁就失效了,此时另一个请求会获取锁,但前一个请求在缓存更新完毕的时候,如果不加以判断直接删除锁,就会出现误删除其它请求创 ...