什么时候用到AsyncTask? (ANR)
目前知道的情况 当访问网络时和加载图片时
原因:androi单线程模型和耗时操作放在非UI线程中
AsyncTask怎么用
一、
1.建立以个继承AsyncTask<Params,Progress,Result>的类需要传入泛型3个
Params:启动任务时,输入参数的类型
Progress:后台任务执行中返回进度值得类型
Result:执行完成之后返回结果的类型
此前我已经将Params赋值String,progress赋值Void,Result赋值List<NewsBean>
OnPreExecute():初始化操作
后面我们来看doInBackground(String... params):耗时操作,异步执行后台线程要完成的任务
如果只传入一个参数 String url = params[0]
返回的是List<NewsBean>类型
OnPostExecute(List<NewsBean>):doInBackground之后自动调用,并将doInbackgroud的返回值做参数
你可以在这里面为什么listview.setAdapter();
OnProgressUpdate():在doInBackground调用publishProgress()更新进度将会触法该方法
二、
加载图片
在listview适配器中,我们重写适配器
其中有ImageLoader这个类对象(自己写的)
1.listView.setOnScrollListener(this); //设置滚动监听事件
通过滚动监听事件:
I、加载可见项
II、在没有滚动的时候才加载,否则不加载(提高用户体验)
2.为了实现异步加载我还在里面写了个继承AscnyTask的类
ImageLoader中有两个很关键的成员变量
LruCache<String, Bitmap> mCache; //String url 作为名称去保存, Bitmap为保存的对象
Set<NewAsyncTask> mTasks;
第一个是缓存对象下次取出来时,可以根据String url(每个图片都有自己对应的url,从Json数据中取出)
第二个是保存自己创建的异步加载任务的集合,每当e'xecute(url)玩,则将Task添加进集合
@Override
protected Bitmap doInBackground(String... params) {
String url = params[0];
//从网络获取图片(一定不在缓存中) 因为此前调用execute(url)之前要判断是否从缓存中 //取得出Bitmap,如果取不出,则表明这是前面没有加载过的项
Bitmap bitmap = getBitmapByURL(url);
//将图片加入缓存中
if(bitmap!=null){
addBitmapToCache(url, bitmap);
}
return bitmap;
}
相关推荐
异步加载AsyncTask_慕课网_完整代码_仿网易新闻ListView,AndroidStudio开发工具
异步加载在Android开发中是不可或缺的一个概念,它主要用于解决主线程执行耗时操作时可能导致的应用卡顿问题。主线程,也称为UI线程,负责处理用户交互和更新界面,如果在此线程中进行大量的计算或网络请求,就会...
本文件主要探讨了如何使用AsyncTask来实现异步加载,并提供了两个版本的示例,特别是第二个版本带有缓存功能,能提高数据加载的效率和用户体验。 首先,我们来了解AsyncTask的基本结构。一个AsyncTask由三个泛型...
本资料包主要讲解了如何使用`AsyncTask`进行异步加载图片,这对于在UI线程中保持流畅用户体验至关重要。 `AsyncTask`是Android SDK中的一个类,它为开发者提供了简单的多线程和回调功能。它的核心思想是将长时间...
在Android开发中,异步加载是一项关键的技术,用于在后台执行耗时操作,避免阻塞主线程,提高用户体验。AsyncTask是Android SDK提供的一种轻量级的异步处理框架,适用于进行短时间、非复杂的异步任务。这篇博客源码...
本篇文章将深入探讨如何在Android中使用`AsyncTask`来异步加载网络图片。 首先,我们了解`AsyncTask`的基本结构。`AsyncTask`有三个泛型参数:`Params`, `Progress`, 和 `Result`。在本例中,`Params`通常是网络...
为了解决这个问题,开发者通常会采用数据异步加载策略,结合AsyncTask来在后台线程处理数据,再在UI线程更新ListView。本篇将详细介绍Android中如何利用ListView和AsyncTask实现数据的异步加载。 一、ListView简介 ...
这里主要介绍两种常用的图片异步加载方法:第一种是使用AsyncTask,第二种是使用第三方库如Picasso或Glide。 一、AsyncTask实现图片异步加载 AsyncTask是Android提供的一个轻量级的异步处理类,适合处理短时间的...
### Android学习笔记(三二):线程:后台异步任务AsyncTask #### 一、AsyncTask概述 在Android开发中,为了确保用户界面的流畅性与应用性能,经常需要在后台执行耗时操作,例如网络请求、数据库操作或文件读写等...
AsyncTask的使用及ListView的常见优化 asyncTask异步加载数据 使用了LruCache优化图片加载 通过滑动监听提高ListView滑动流畅度.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习...
在`AsyncTaskDemo`这个例子中,我们可以看到如何使用`AsyncTask`来异步加载网络图片: 1. 首先创建一个继承自`AsyncTask`的子类,例如`LoadImageTask`,并指定合适的泛型参数,如`LoadImageTask, Void, Bitmap>`。 ...
"Asynctask异步加载的使用"这一主题涵盖了如何利用Android SDK中的AsyncTask类来实现后台任务的执行,并在UI线程更新结果。以下是对这个知识点的详细讲解: AsyncTask是Android提供的一种轻量级的异步处理机制,...
在Android应用开发中,Handler、AsyncTask和异步加载是三个关键的概念,它们主要用于解决UI线程阻塞问题,提高应用程序的响应速度和用户体验。下面将详细解释这三个概念及其相互关系。 **Handler(处理器)** ...
在这样的项目中,你可能会看到使用了`AsyncTask`、`Handler`、`Loader`(如`AsyncTaskLoader`)或者其他第三方库来实现异步加载。每个组件都有其特点和适用场景,例如`AsyncTask`适合一次性任务,`Handler`适合处理...
Android是单线程模型,耗时的操作必须放在非主线程中执行,对此,我们需要使用多线程/线程池或者AsyncTask等来完成异步加载任务。 博客地址:http://blog.csdn.net/chenzheng8975/article/details/53893666
本文将深入探讨标题中的"AsyncTask带缓存的网络数据异步加载",并结合`recyclerView`和`listView`进行讨论。 首先,让我们了解`AsyncTask`。`AsyncTask`允许开发者在后台线程执行计算密集型任务,并在UI线程更新...
综上所述,"listview异步加载源码"涉及到的主要知识点包括Android线程模型、异步加载策略、AsyncTask、CursorLoader和LoaderManager的使用、RecyclerView优化以及图片加载库的使用。理解并掌握这些知识点,能够帮助...
在Android中,我们通常使用AsyncTask或者Loader来实现异步加载。 1. 使用AsyncTask:AsyncTask是Android提供的一个轻量级组件,用于在后台执行任务并更新UI。在GridView中,我们可以在onScroll事件中启动AsyncTask...
要实现异步加载图片,我们需要使用 Thread 或 AsyncTask 来加载图片。这里我们使用 Thread 来加载图片。在 loadDrawable 方法中,我们首先检查图片是否已经加载,如果已经加载,则直接返回缓存的图片,如果没有加载...
AsyncTask是Android SDK提供的一种轻量级异步处理框架,适用于简单且快速的任务。下面将详细解释AsyncTask的工作原理和使用方法。 **AsyncTask概述** AsyncTask是Android中的一个抽象类,用于在后台线程执行任务,...