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)的更多相关文章

  1. Android备注26.Android异步任务(AsyncTask)

    转载请表明出处:http://blog.csdn.net/u012637501(嵌入式_小J的天空) 一.引言     我们知道Android的UI线程主要负责处理用户的按键事件.用户触屏事件及屏幕画 ...

  2. Android异步任务AsyncTask

    package com.example.asynctask; import java.net.MalformedURLException; import java.net.URL; import an ...

  3. Android 异步任务——AsyncTask (附使用AsyncTask下载图片Demo)

    我们编程的时候经常需要处理同步任务和异步任务,在Android里面存在一个特性,就是UI线程是不安全的线程.所谓UI线程不安全也就是我们的主线程(进程启动的第一个线程)不能在线程外操作主线程的资源.因 ...

  4. android:异步任务asyncTask介绍及异步任务下载图片(带进度条)

    为什么要用异步任务? 在android中仅仅有在主线程才干对ui进行更新操作.而其他线程不能直接对ui进行操作 android本身是一个多线程的操作系统,我们不能把全部的操作都放在主线程中操作 .比方 ...

  5. android异步任务asyncTask详细分析

    android中的耗时操作需要放在子线程中去执行 asynctask是对Handler和和线程池的封装,直接使用比THread效率更加的高效因为封装了线程池,比我们每次直接new Thread效率更高 ...

  6. Android异步载入AsyncTask具体解释

    曾看见有人说过.认为非常有道理.分享一下:   技术分为术和道两种:   (1)具体做事的方法是术.   (2)做事的原理和原则是道. 近期项目发现个重大问题.结果打log跟踪查是AsyncTask导 ...

  7. [Android]异步任务AsyncTask使用解析

    AsyncTask主要用来更新UI线程,比较耗时的操作可以在AsyncTask中使用. AsyncTask是个抽象类,使用时需要继承这个类,然后调用execute()方法.注意继承时需要设定三个泛型P ...

  8. Java基础知识强化之网络编程笔记15:Android网络通信之 Android异步任务处理(AsyncTask使用)

         AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的 ...

  9. Android 之异步任务(AsyncTask,Handler,Message,looper)

    AsyncTask: 3个类型(Params,Progress和Result),4个步骤(onPreExecute(),doInBackground(Params…),onProgressUpdate ...

随机推荐

  1. SpringMVC通过注解在数据库中自动生成表

    在application-persistence.xml中的<property name="hibernate.hbm2ddl.auto" value="${hib ...

  2. Python自动化测试常用库

    基本库: sys 程序和Python解析器的交互 os 启动新进程:操作文件和目录 re 正则表达式,字符串匹配 string 基本字符串操作 inspect 提供自省和反射功能 importlib ...

  3. SetThreadAffinityMask windows下绑定线程(进程)到指定的CPU核心

    原帖地址:https://www.cnblogs.com/lvdongjie/p/4476766.html 一个程序指定到单独一个CPU上运行会比不指定CPU运行时快.这中间主要有两个原因:1)CPU ...

  4. Windows 操作系统 快捷键

    窗口放大缩小:  + ↑↓ 最小化窗口: ALT + Esc 关闭窗口: Alt + F4 搜索功能:  + 直接输入搜索内容 打开文件管理器:  + E 在文件管理器中切换: Tab

  5. Docs-.NET-C#-指南-语言参考-关键字-值类型:可以 null 的值类型

    ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:可以 null 的值类型 1.返回顶部 1. Nullable value types (C# reference) 2019 ...

  6. Leetcode: Most Stones Removed with Same Row or Column

    On a 2D plane, we place stones at some integer coordinate points. Each coordinate point may have at ...

  7. 免费好用的SSH手机客户端

    简单说一些,SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定,SSH 为建立在应用层基础上的安全协议.SSH 是目前较可靠,专 ...

  8. 使用.whl文件安装torch和pytorch的方法

    当使用pip install torch torchvision命令下载感觉很慢时 可以先到下面的网页将.whl文件下载下来,然后再运行安装即可: torchvision也是 下载好了以后,运行: p ...

  9. setInterval调用ajax回调函数不执行的问题

    setInterval调用ajax回调函数不执行 1.首先检查你的setInterval()函数写法是否正确 参考写法 // 检查是否支付成功 var isPayRequest=false; var ...

  10. Qt编写自定义控件69-代码行数统计

    一.前言 代码行数统计主要用来统计项目中的所有文件的代码行数,其中包括空行.注释行.代码行,可以指定过滤拓展名,比如只想统计.cpp的文件,也可以指定文件或者指定目录进行统计.写完这个工具第一件事情就 ...