首页 > 代码库 > android开发 AsyncTask的使用
android开发 AsyncTask的使用
AsyncTask 资料上写是android提供的轻量级的异步类
可以直接继承AsyncTask 在类中实现异步操作 并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新)
最后反馈执行的结果给UI主线程
个人觉得 这是在一个线程的基础上 增加了对UI的控制 这样就不是一个简单的线程派生类
这就丰富了对UI的控制
而UI的控制一般都是在主线程上 ID是1 至于AsyncTask 内到底哪些接口是在主线程上
哪些是异步的线程上 而那些接口的调用顺序是怎么样的 下面就来看看一个例子
首先写一个AsyncTask派生类
吧哪些执行操作的接口都重写一下 并打印输出
public class PlayAsyncTask extends AsyncTask<Void, Void, Void> { @Override protected Void doInBackground(Void... arg0) { System.out.println("doInBackground Thread ID "+Thread.currentThread().getId()); //该函数会产生一个onProgressUpdate回调 publishProgress(); return null; } @Override protected void onPostExecute(Void result) { // TODO Auto-generated method stub super.onPostExecute(result); System.out.println("onPostExecute Thread ID "+Thread.currentThread().getId()); } @Override protected void onPreExecute() { // TODO Auto-generated method stub super.onPreExecute(); System.out.println("onPreExecute Thread ID "+Thread.currentThread().getId()); } @Override protected void onProgressUpdate(Void... values) { // TODO Auto-generated method stub super.onProgressUpdate(values); System.out.println("onProgressUpdate Thread ID "+Thread.currentThread().getId()); } }
在Activity上生成一个对象 这样就在主线程上执行了一个异步操作
System.out.println(" AsyncTask start"); PlayAsyncTask playAsyncTask = new PlayAsyncTask(); playAsyncTask.execute();
看看输出的结果
可以看到的是 只有doInBackground会在异步线程上执行 其余的都是在主线程上
也就是说 除doInBackground外 其他的回调函数都能对UI执行操作
android开发 AsyncTask的使用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。