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不能完全取代线程,在一些逻辑较为复杂或者需要在后台反复执行的逻辑就可能需要线程来实现了。

相关文章
|
7月前
|
Java 数据库 Android开发
Android异步之旅:探索AsyncTask
Android异步之旅:探索AsyncTask
57 0
|
3月前
|
Android开发 开发者 Kotlin
告别AsyncTask:一招教你用Kotlin协程重构Android应用,流畅度飙升的秘密武器
【9月更文挑战第13天】随着Android应用复杂度的增加,有效管理异步任务成为关键。Kotlin协程提供了一种优雅的并发操作处理方式,使异步编程更简单直观。本文通过具体示例介绍如何使用Kotlin协程优化Android应用性能,包括网络数据加载和UI更新。首先需在`build.gradle`中添加coroutines依赖。接着,通过定义挂起函数执行网络请求,并在`ViewModel`中使用`viewModelScope`启动协程,结合`Dispatchers.Main`更新UI,避免内存泄漏。使用协程不仅简化代码,还提升了程序健壮性。
86 1
|
6月前
|
Android开发
40. 【Android教程】AsyncTask:异步任务
40. 【Android教程】AsyncTask:异步任务
140 2
|
7月前
|
数据库 Android开发
android AsyncTask
android AsyncTask
45 1
|
7月前
|
Android开发 开发者
Android AsyncTask 的使用
Android AsyncTask 的使用
46 1
|
7月前
|
安全 API 数据库
【转】Android线程模型(AsyncTask的使用)
【转】Android线程模型(AsyncTask的使用)
44 1
|
7月前
|
Android开发
Android中的多线程及AsyncTask的引入,最终入职阿里
Android中的多线程及AsyncTask的引入,最终入职阿里
|
7月前
|
Java Android开发
android AsyncTask入门
android AsyncTask入门
31 0
|
7月前
|
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.
40 0
|
安全 Java Android开发
Android 中AsyncTask后台线程,异步任务的理解
Android 中AsyncTask后台线程,异步任务的理解
161 0