Android之AsyncTask异步加载

本文详细介绍了Android中的异步加载机制AsyncTask的工作原理、使用步骤以及示例代码,旨在帮助开发者掌握如何在不阻塞主线程的情况下完成耗时操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天总结的是android中的异步加载AsyncTask。android的UI线程(主线程)主要负责处理用户的按键事件、用户触屏事件及屏幕绘图事件等,因此开发者的其他操作不应该、也不能阻塞UI线程,否者UI界面将会出现停止响应的状况。
为了避免UI线程失去响应的问题,android将耗时操作放在了新线程中完成,但是新线程也可能需要动态更新UI组件:比如需要从网上获取网页,然后在TextView中将其源代码显示出来,此时就应该将连接网络、获取网络数据的操作放在新线程中完成。
AsyncTask<params,progress,result>是一个抽象类,通常被继承。其中有三个参数需要指定。params:启动任务执行的输入参数的类型。progress:后台任务完成的进度值的类型。result:后台执行任务完成后返回结果的类型。
使用AsyncTask的三个步骤:
1、创建AsyncTask子类,指定三个泛型参数,如果某个泛型参数不需要返回值的则可指定为Void。注意:AsyncTask子类一般都是UI主线程(Activity)中的内部类。
2、根据需要实现AsyncTask类的方法。
3、实例化AsyncTask子类,调用excute();方法开始耗时操作。
示例代码:
public class MyAsyncTaskActivity extends Activity{
    public void onCreate(Bundle savedInstanceState){
        super.onCreate();
        setContentView(R.layout.main);

        //实例化AsyncTask类。
        MyAsyncTask mMyAsncTask=new MyAsyncTask;
        //实例化的对象调用execute()方法开始执行耗时操作。
        mMyAsyncTask.execute();
    }
  //创建AsyncTask类的子类,指定三个泛型参数的类型,实现AsyncTask类的方法。
    class MyAsyncTask extends AsyncTask<URL,Integer,String>{
    //doInBackground()方法就是后台将要完成的任务,failed方法可以调用publishProgress(Progress values)方法更新新任务的执行进度。
    procted String doInBackground(URL[] params){
        }
        //onProExecute()方法在执行后台耗时操作之前调用,主要完成一些初始化的准备工作,比如在界面上显示进度条。
    protected void onProExecute(){
        }
        //onPostExecute()方法在执行完后台耗时操作后,系统会自动调用该方法,并将doInBackground()方法的返回值传给该方法。
    protected void onPostExecute(String s){
        }
        //onProgressUpdate()在DoInBackground()方法中调用publishProgress()方法更新任务的执行进度后,会触发该方法。
    protected void onProgressUpdate(Integer valus){
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值