Android AsyncTask详解

Android AsyncTask详解,第1张

概述Android AsyncTask是一个轻量级的异步任务处理类 常见的使用步骤->创建一个继承自AsyncTask类的异步任务处理类  (AsyncTask<Params,Progress,Result> Params启动任务执行的输入参数,比如一组URL Progress后台任务执行的百分比 Result执行完任务后的返回结果)     class MyAsyncTask extends Asy

AndroID AsyncTask是一个轻量级的异步任务处理类

常见的使用步骤->创建一个继承自AsyncTask类的异步任务处理类

 (AsyncTask<Params,Progress,Result>

Params启动任务执行的输入参数,比如一组URL

Progress后台任务执行的百分比

Result执行完任务后的返回结果)

 

 

class MyAsyncTask extends AsyncTask<Integer,Integer,String> {    @OverrIDe    protected String doInBackground(Integer... params) {        //运行在工作线程        //在onPreExecute方法执行完成后马上执行,负责执行        //耗时的后台处理任务,可调用publishProgress方法实        //时更新任务进度    }    @OverrIDe    protected voID onPreExecute() {        //运行在UI线程        //在执行后台耗时 *** 作之前,通常用于一些初始化 *** 作,比如进度条显示    }    @OverrIDe    protected voID onProgressUpdate(Integer... values) {        //运行在UI线程        //在dobackground方法中,每次调用publishProgress方法都会触发该方法    }}

 

 

 

 

 

->在UI线程创建MyAsyncTask实例

->在UI线程中调用mAsyncTask.execute()

 一个完整的例子

MainActivity

 

package com.example.myfirstapp;import androIDx.appcompat.app.AppCompatActivity;import androID.os.AsyncTask;import androID.os.Bundle;import androID.vIEw.VIEw;import androID.Widget.button;import androID.Widget.Progressbar;import androID.Widget.TextVIEw;public class MainActivity extends AppCompatActivity {    private TextVIEw txtTitle;    private Progressbar pgbar;    private button btnupdate;    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_main);        txtTitle = (TextVIEw)findVIEwByID(R.ID.txtTitle);        pgbar = (Progressbar)findVIEwByID(R.ID.pgbar);        btnupdate = (button)findVIEwByID(R.ID.btnupdate);        btnupdate.setonClickListener(new VIEw.OnClickListener() {            @OverrIDe            public voID onClick(VIEw v) {                MyAsyncTask myTask = new MyAsyncTask(txtTitle,pgbar);                myTask.execute(1000);            }        });    }}class DelayOperator {    //延时 *** 作,用来模拟下载    public voID delay()    {        try {            Thread.sleep(1000);        }catch (InterruptedException e){            e.printstacktrace();;        }    }}class MyAsyncTask extends AsyncTask<Integer,String>{    private TextVIEw txt;    private Progressbar pgbar;    public MyAsyncTask(TextVIEw txt,Progressbar pgbar)    {        super();        this.txt = txt;        this.pgbar = pgbar;    }    //该方法不运行在UI线程中,主要用于异步 *** 作,通过调用publishProgress()方法    //触发onProgressUpdate对UI进行 *** 作    @OverrIDe    protected String doInBackground(Integer... params) {        DelayOperator dop = new DelayOperator();        int i = 0;        for (i = 10;i <= 100;i+=10)        {            dop.delay();            publishProgress(i);        }        //i + params[0].intValue()        return  "";    }    //该方法运行在UI线程中,可对UI控件进行设置    @OverrIDe    protected voID onPreExecute() {        txt.setText("开始执行异步线程~");    }    //在dobackground方法中,每次调用publishProgress方法都会触发该方法    //运行在UI线程中,可对UI控件进行 *** 作    @OverrIDe    protected voID onProgressUpdate(Integer... values) {        pgbar.setProgress(values[0].intValue());    }}

 

布局代码

activity_main

<linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    xmlns:tools="http://schemas.androID.com/tools"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    androID:orIEntation="vertical"    tools:context=".MyActivity">    <TextVIEw        androID:ID="@+ID/txtTitle"        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content" />    <!--设置一个进度条,并且设置为水平方向-->    <Progressbar        androID:layout_wIDth="fill_parent"        androID:layout_height="wrap_content"        androID:ID="@+ID/pgbar"        style="?androID:attr/progressbarStyleHorizontal"/>    <button        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:ID="@+ID/btnupdate"        androID:text="更新progressbar"/></linearLayout>
总结

以上是内存溢出为你收集整理的Android AsyncTask详解全部内容,希望文章能够帮你解决Android AsyncTask详解所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1121564.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存