Android专题之AsyncTask(二)简单AsyncTask例子解决线程阻塞

文章目录

一、相关文章

二、前言

三、代码基本思路


一、相关文章

Android专题之AsyncTask(一)基本概念介绍

Android专题之AsyncTask(二)简单AsyncTask例子解决线程阻塞

Android专题之AsyncTask(三)异步方法操作之进度条

二、前言

在本系列的上一篇文章中,我们学习了AsyncTask的有关基本概念,相信应该有所了解了。还没有看过上一篇文章的朋友,建议先去阅读 Android专题之AsyncTask(一)基本概念介绍 下面这篇文章我将介绍基本方法的使用,写一个简单的AsyncTask异步操作解决上一篇文章提到的线程阻塞问题

点击可下载源码:02_AsyncTask_简单演示AsyncTask异步操作 欢迎大家留言讨论支持!

一般程序是分为两个线程来执行的:第一个是UI线程,第二个是异步线程。那么异步任务AsyncTask的整体执行过程,在每个方法里面都可以做什么操作呢?下面我们来做一个简单的例子。。。

三、代码基本思路

1、在MainActivity里面添加两个按钮,一个称为“网络操作按钮”,一个称为“打印按钮”,然后给他们设置监听

2、新建NetOperator网络操作类,用线程睡眠进行模拟

/**

* @ClassName:NetOperator

* @Package:com.huazi.AsyncTask2

* @Description:(可以在这里描述这个类的作用)

* 模拟访问网络的操作,只要生成NetOperator类的对象,调用它的operator方法,线程就会进入休眠状态。

* @author:luminal、邮箱 luminal_yyh@163.com

* @date:2012-12-10 上午11:43:23

* @update:2018-11-15 下午12:30:18

*/

public class NetOperator {

public void operate(){

try{

Thread.sleep(5*1000);//Thread代表线程。其实线程的休眠,就属于线程的一种阻塞事件。

}catch(InterruptedException e){

e.printStackTrace();

}

}

}

3、“打印按钮”的监听里面

就输出字符串即可。如:System.out.println("我在输出信息!");  或 Log.v(TAG, "我在输出信息!");

4、写AsyncTask异步类

继承AsyncTask类,重写doInBackground方法,在方法里面调用执行NetOperator网络操作类

//Void这个类的首字母是大写的,这个类的对象代表空,专门为泛型所设计的。

public class FirstAsyncTask extends AsyncTask<Void,Void,Void>{

//这个方法是在后台运行的。在一个新线程中运行,它和MainActivity不在同一个线程中运行。

@Override

protected Void doInBackground(Void... params) {//返回值为Void,参数也是Void类型

NetOperator netOperator=new NetOperator();//引用自定义的外部类NetOperator

netOperator.operate();

return null;

}

}

5、“网络操作按钮”的监听里面

里面调用FirstAsyncTask,执行execute方法,进行测试网络操作,不会影响UI线程的执行了

效果演示如下图:操作点击“开始网络操作”开始睡眠,连续多次点击“打印一个字符串”,并不会像上篇文章那样“没有反应,然后再一起打印”啦!下一篇我们将介绍类和方法的具体使用:Android专题之AsyncTask(三)异步方法操作之进度条


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

被开发耽误的大厨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值