Android 中的AsyncTask的使用心得

简介: Android 中的AsyncTask的使用心得

Android 中的AsyncTask的使用心得

在android程序中一定不能阻塞UI线程,否则很容易就会弹出no respond 的对话框,导致程序退出。为了避免这种情况,一般需要较长时间执行的任务都放在线程中去执行,如从网上下载图片在界面的某个区域显示。但是使用线程回导致cpu开销过大,并且当线程管理不好时也会弹出no respond框。android提供了AsyncTask类用来处理这种情况;例如需要下载图片,然后在songImagButton中显示,下载的逻辑在songImageButton的initImage方法中。

Java代码

private class DrawImageTask extends AsyncTask<Void,Integer,Void>{   
//更新图片显示区域,显示图片   
        @Override  
        protected void onPostExecute(Void params) {   
            // TODO Auto-generated method stub   
            songImageButton.invalidate();   
            this.cancel(false);   
        }   
//下载图片   
        @Override  
        protected Void doInBackground(Void... params) {   
            // TODO Auto-generated method stub   
            songImageButton.initImage();   
            return null;   
        }   
  
    }

private class DrawImageTask extends AsyncTask<Void,Integer,Void>{//更新图片显示区域,显示图片 @Override protected void onPostExecute(Void params) { // TODO Auto-generated method stub songImageButton.invalidate(); this.cancel(false); }//下载图片 @Override protected Void doInBackground(Void... params) { // TODO Auto-generated method stub songImageButton.initImage(); return null; } }

 一般在doInBackground中执行后台的逻辑,如下载图片或其他需要耗时长的任务,onPostExecute方法用来对界面进行操作。如果后台的逻辑有返回值,则由doInBackground返回然后传入onPostExecute方法,然后更新界面。doInBackground方法和onPostExecute的参数必须对应,这两个参数在AsyncTask声明的泛型参数列表中指定,第一个为doInBackground接受的参数,第二个为显示进度的参数,第第三个为doInBackground返回和onPostExecute传入的参数。

当然我个人认为AsyncTask不能完全取代线程,在一些逻辑较为复杂或者需要在后台反复执行的逻辑就可能需要线程来实现了。

相关文章
|
5天前
|
Java 数据库 Android开发
Android异步之旅:探索AsyncTask
Android异步之旅:探索AsyncTask
25 0
|
4天前
|
Android开发
Android中的多线程及AsyncTask的引入,最终入职阿里
Android中的多线程及AsyncTask的引入,最终入职阿里
|
5天前
|
数据库 Android开发
android AsyncTask
android AsyncTask
18 1
|
5天前
|
Android开发 开发者
Android AsyncTask 的使用
Android AsyncTask 的使用
12 1
|
5天前
|
安全 API 数据库
【转】Android线程模型(AsyncTask的使用)
【转】Android线程模型(AsyncTask的使用)
13 1
|
5天前
|
Java Android开发
android AsyncTask入门
android AsyncTask入门
|
5天前
|
Android开发 开发者
Android网络和数据交互: 请解释Android中的AsyncTask的作用。
Android&#39;s AsyncTask simplifies asynchronous tasks for brief background work, bridging UI and worker threads. It involves execute() for starting tasks, doInBackground() for background execution, publishProgress() for progress updates, and onPostExecute() for returning results to the main thread.
12 0
|
9月前
|
安全 Java Android开发
Android 中AsyncTask后台线程,异步任务的理解
Android 中AsyncTask后台线程,异步任务的理解
106 0
|
Java Android开发
Android之AsyncTask 源码阅读
Android之AsyncTask 源码阅读
Android之AsyncTask 源码阅读
|
Android开发
android用异步操作AsyncTask编写文件查看器
android用异步操作AsyncTask编写文件查看器
112 0