• 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

  • 相关阅读:
    Selenium IDE的使用
    add jars、add external jars、add library、add class folder的区别
    java中equals和==区别
    java分布式事务
    六边形架构模式
    JAVA分布式事务原理及应用(转)
    HashMap的实现原理和底层数据结构
    HashMap实现原理分析
    深入Java集合学习系列:HashMap的实现原理
    23种设计模式汇总整理
  • 原文地址:https://www.cnblogs.com/luckyplj/p/10517802.html
Copyright © 2020-2023  润新知