`
Spiritualize_彭韬
  • 浏览: 25751 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

异步加载(AsyncTask)

 
阅读更多

  什么时候用到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

    异步加载AsyncTask_慕课网_完整代码_仿网易新闻ListView,AndroidStudio开发工具

    异步加载 AsyncTask 简单的

    异步加载在Android开发中是不可或缺的一个概念,它主要用于解决主线程执行耗时操作时可能导致的应用卡顿问题。主线程,也称为UI线程,负责处理用户交互和更新界面,如果在此线程中进行大量的计算或网络请求,就会...

    异步加载AsyncTask的使用

    本文件主要探讨了如何使用AsyncTask来实现异步加载,并提供了两个版本的示例,特别是第二个版本带有缓存功能,能提高数据加载的效率和用户体验。 首先,我们来了解AsyncTask的基本结构。一个AsyncTask由三个泛型...

    Android AsyncTask用法和异步加载图片.rar

    本资料包主要讲解了如何使用`AsyncTask`进行异步加载图片,这对于在UI线程中保持流畅用户体验至关重要。 `AsyncTask`是Android SDK中的一个类,它为开发者提供了简单的多线程和回调功能。它的核心思想是将长时间...

    异步加载AsyncTask

    在Android开发中,异步加载是一项关键的技术,用于在后台执行耗时操作,避免阻塞主线程,提高用户体验。AsyncTask是Android SDK提供的一种轻量级的异步处理框架,适用于进行短时间、非复杂的异步任务。这篇博客源码...

    Android用AsyncTask异步加载图片(新)

    本篇文章将深入探讨如何在Android中使用`AsyncTask`来异步加载网络图片。 首先,我们了解`AsyncTask`的基本结构。`AsyncTask`有三个泛型参数:`Params`, `Progress`, 和 `Result`。在本例中,`Params`通常是网络...

    Android中使用ListView数据异步加载与AsyncTask

    为了解决这个问题,开发者通常会采用数据异步加载策略,结合AsyncTask来在后台线程处理数据,再在UI线程更新ListView。本篇将详细介绍Android中如何利用ListView和AsyncTask实现数据的异步加载。 一、ListView简介 ...

    android 实现图片异步加载

    这里主要介绍两种常用的图片异步加载方法:第一种是使用AsyncTask,第二种是使用第三方库如Picasso或Glide。 一、AsyncTask实现图片异步加载 AsyncTask是Android提供的一个轻量级的异步处理类,适合处理短时间的...

    Android学习笔记(三二):线程:后台异步任务AsyncTask_IT168文库

    ### Android学习笔记(三二):线程:后台异步任务AsyncTask #### 一、AsyncTask概述 在Android开发中,为了确保用户界面的流畅性与应用性能,经常需要在后台执行耗时操作,例如网络请求、数据库操作或文件读写等...

    安卓图片加载缓存相关-AsyncTask的使用及ListView的常见优化asyncTask异步加载数据使用了LruCache优化图片加载通过滑动监听提高ListView滑动流畅度.rar

    AsyncTask的使用及ListView的常见优化 asyncTask异步加载数据 使用了LruCache优化图片加载 通过滑动监听提高ListView滑动流畅度.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习...

    AsyncTask异步加载图片

    在`AsyncTaskDemo`这个例子中,我们可以看到如何使用`AsyncTask`来异步加载网络图片: 1. 首先创建一个继承自`AsyncTask`的子类,例如`LoadImageTask`,并指定合适的泛型参数,如`LoadImageTask, Void, Bitmap&gt;`。 ...

    Asynctask异步加载的使用

    "Asynctask异步加载的使用"这一主题涵盖了如何利用Android SDK中的AsyncTask类来实现后台任务的执行,并在UI线程更新结果。以下是对这个知识点的详细讲解: AsyncTask是Android提供的一种轻量级的异步处理机制,...

    Android Handler AsyncTask 异步加载

    在Android应用开发中,Handler、AsyncTask和异步加载是三个关键的概念,它们主要用于解决UI线程阻塞问题,提高应用程序的响应速度和用户体验。下面将详细解释这三个概念及其相互关系。 **Handler(处理器)** ...

    Android异步加载图片例子

    在这样的项目中,你可能会看到使用了`AsyncTask`、`Handler`、`Loader`(如`AsyncTaskLoader`)或者其他第三方库来实现异步加载。每个组件都有其特点和适用场景,例如`AsyncTask`适合一次性任务,`Handler`适合处理...

    Android异步任务AsyncTask实例源码

    Android是单线程模型,耗时的操作必须放在非主线程中执行,对此,我们需要使用多线程/线程池或者AsyncTask等来完成异步加载任务。 博客地址:http://blog.csdn.net/chenzheng8975/article/details/53893666

    AsyncTask带缓存的网络数据异步加载

    本文将深入探讨标题中的"AsyncTask带缓存的网络数据异步加载",并结合`recyclerView`和`listView`进行讨论。 首先,让我们了解`AsyncTask`。`AsyncTask`允许开发者在后台线程执行计算密集型任务,并在UI线程更新...

    listview异步加载源码

    综上所述,"listview异步加载源码"涉及到的主要知识点包括Android线程模型、异步加载策略、AsyncTask、CursorLoader和LoaderManager的使用、RecyclerView优化以及图片加载库的使用。理解并掌握这些知识点,能够帮助...

    GridView异步加载大量网络图片

    在Android中,我们通常使用AsyncTask或者Loader来实现异步加载。 1. 使用AsyncTask:AsyncTask是Android提供的一个轻量级组件,用于在后台执行任务并更新UI。在GridView中,我们可以在onScroll事件中启动AsyncTask...

    Android实现ListView异步加载图片

    要实现异步加载图片,我们需要使用 Thread 或 AsyncTask 来加载图片。这里我们使用 Thread 来加载图片。在 loadDrawable 方法中,我们首先检查图片是否已经加载,如果已经加载,则直接返回缓存的图片,如果没有加载...

    Android异步任务AsyncTask的简单DEMO

    AsyncTask是Android SDK提供的一种轻量级异步处理框架,适用于简单且快速的任务。下面将详细解释AsyncTask的工作原理和使用方法。 **AsyncTask概述** AsyncTask是Android中的一个抽象类,用于在后台线程执行任务,...

Global site tag (gtag.js) - Google Analytics