所谓异步任务即异步执行,把一个耗时的任务放入另一个线程中去执行,由AsyncTask类管理。
下面给出一个测试程序,测试异步任务的执行,如果不使用异步执行会怎么样,利用异步机制又会怎么样。
本实例包含三个类:
1.模拟一个耗时任务的类,该类使得线程休眠5000毫秒,代码如下:
public class NetOperate {
public void operator(){
try {
Thread.sleep(5000);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
2.这个类是异步机制的子类,重写其中的doInBackground方法,使得任务在异步线程中执行,代码如下:
//这里的参数Void并不是类型,而是代表抽象类
public class FirstAsyncTask extends AsyncTask<Void, Void, Void>{
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
NetOperate netOperate=new NetOperate();
netOperate.operator();
return null;
}
}
3.这个类是主线程的调用,代码如下:
public class MainActivity extends Activity {
private Button button;;
private Button button2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button=(Button)findViewById(R.id.button1);
button2=(Button)findViewById(R.id.button2);
button.setOnClickListener(new MyButton());
button2.setOnClickListener(new MyButton());
}
private class MyButton implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.button1:
net();
break;
case R.id.button2:
log();
break;
default:
break;
}
}
}
public void net(){
/*
* 如果用一下注释的代码,则这两个操作都是在一个线程里运行,即主线程,
* 当利用下面的代码时,用的是一个异步线程,互相不干扰
*/
// NetOperate netOperate=new NetOperate();
// netOperate.operator();
FirstAsyncTask firstAsyncTask=new FirstAsyncTask();
firstAsyncTask.execute();
}
public void log(){
Log.d("BruceZhang", "你好!!");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
分享到:
相关推荐
安卓开发-android录音上传到服务器,上传使用AsyncTask异步任务.zip
NULL 博文链接:https://aking86.iteye.com/blog/1329089
android异步任务加载组件,是我们常用的。该demo详细的介绍了,如何通过异步加载数据,很适合处学者的开发。
Android 应用开发源码 参考与学习使用
因为,UI线程主要是用来更新界面UI,如果一次进行太多的任务处理,并且这些任务需要相当的时间来完成,就会造成UI线程堵塞,结果可能是应用无响应(Android4.0以后,谷歌已经禁止在UI线程中进行“耗时操作”),这样的...
Android应用源码开发Demo,主要用于毕业设计学习。
android较轻级异步任务的一点理解。
Android应用源码开发Demo,主要用于毕业设计学习。
减少了许多重复的工作,是一个Google的AsyncTask的精简版(使用Google的AsyncTask,内部开销比较大,不适合简单开发,对于比较负责或者要求多线程异步任务的时候比较适合使用Google的AsyncTask)
为什么要用异步任务? 在Android中只有在主线程才能对ui进行更新操作,而其它线程不能直接对ui进行操作 android本身是一个多线程的操作系统,我们不能把所有的操作都放在主线程中操作 ,比如一些耗时操作。如果放在...
Android为了降低这个开发难度 提供了AsyncTask AsyncTask就是一个封装过的后台任务类 顾名思义就是异步任务 AsyncTask直接继承于Object类 位置为android os AsyncTask 要使用AsyncTask工作我们要提供三个泛型参数 ...
Android AsyncTask实现异步处理任务的方法详解 在开发Android应用时必须遵守单线程模型的原则:Android UI操作并不是线程安全的并且这些操作必须在UI线程中执行。 Android 单线程模型概念详解://...
Android的日常开发中,经常需要处理异步任务,系统提供的Handler和Asynctask实在不方便,一些开源的第三方库由于过于庞大和复杂,例如RxJava,虽然很方便,但RxJava在团队中不容易推广,所以实现了一个简洁、方便、...
【第一部分】历史文章: Android学习笔记(一)——创建第一个Android项目 ...Android学习笔记(六)——自定义ListView布局+AsyncTask异步任务 Android学习笔记(七)——数据存储(共享参数Share
在Android中实现异步任务机制有两种方式,Handler和AsyncTask。 Handler模式需要为每一个任务创建一个新的线程,任务完成后通过Handler实例向UI线程发送消息,完成界面的更新,这种方式对于整个过程的控制比较精细,...
这里说有设计思想是我根据查看Android源代码提炼出来的代码逻辑,所以不会跟Google工程师的原始设计思想100%符合(也有可能是0%),但是本文一定可以帮助你理解AsyncTask,也可能有一些你以前没有发现的内容。...
AsyncTask,顾名思义,异步任务。说到异步,最简单的理解就是不同步。再复杂一点理解,就得举例子了。 假设我要去火车站买票,刚到火车站我突然发现我忘了带身份证。怎么办?怎么办! 想办法,想办法!我想我应该找...
|--异步任务AsyncTask的用法 |--异步任务的自定义 |--快捷方式增删查 |--手势识别器GestureDetector的用法 |--拍照之调用系统相机并显示及保存 |--拨打电话 |--按健之长按menu事件屏蔽 |--按健监听按返回健回桌面 |-...
Android是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的移动操作系统,主要应用于移动设备,如智能手机和平板电脑。该系统最初由安迪·鲁宾开发,后被Google公司收购并注资,随后与多家硬件制造商、软件...