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

最新文章

  1. Context值和bool开关
  2. Bash 的 no-fork 优化
  3. SPOJ DISUBSTR(字符串hash)
  4. Stack by pointer
  5. JVM回收方法区内存
  6. Docker: Failed to get D-Bus connection: No connection to service
  7. 关于xpath相对路径前加点与不加点的区别
  8. Java 就业班 Web框架
  9. 排序NB三人组
  10. php数组按值的大小排序
  11. iOS | 使用HBuilder进行云端打包步骤
  12. 【Java】 大话数据结构(1) 线性表之顺序存储结构
  13. 如何使用Git上传项目代码到github
  14. Quo JS多种触摸手势轻量级JavaScript库
  15. 易普优APS-3C行业解决方案助力国家智能制造示范车间实现高效计划排程
  16. object-c 常用判断null的宏定义,如果是null直接返回@&quot;&quot;
  17. Swift函数_inout参数
  18. 友盟移动开发平台.NET版本SDK
  19. tomcat的安装、配置
  20. linux中,在在shadowsoks下怎么更新软件

热门文章

  1. 如何用elasticsearch构架亿级数据采集系统(第1集:非生产环境windows安装篇)
  2. mac webstorm 安装破解
  3. Java 学习之路(1)第一个Java程序
  4. mysql5.6源码部署
  5. Emmet语法规则
  6. Assignment6:白盒测试方法
  7. 【深度学习】关于Adam
  8. HTTP Referrer和Referrer Policy 设置
  9. Android分区解释
  10. Spark(五十二):Spark Scheduler模块之DAGScheduler流程