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