`
yangshen998
  • 浏览: 1288951 次
文章分类
社区版块
存档分类
最新评论

Handler+thread 加载网络图片

 
阅读更多

关于Android多线程处理UI-我在网上查了下资料发现有好几种,本次学习只是其中一种,主要是利用handler结合Thread更新UI。

下面是我写的小Demo:

Handler+thread 加载网络图片,我在网上随便找了三张图片,分别开三个线程加载他们,然后在Activity中显示。

其中一个线程出现异常不会影响到其他线程更不会阻塞主线程(UI线程) ,这是多线程带来的好处之一。奋斗

本次Demo主要是利用Handler.sendMessage(...)把消息压进消息队列,过后通过Handler.handleMessage(...)在UI线程中处理压入的消息。从队列中取出消息时会根据压入的不同消息来更新UI。图片在外部线程中加载,加载完后sendmessage在主线程中更新UI。外部线程只顾加载图片,而更新UI是主线程(UI线程)的事,这个就达到了多线程异步加载网络图片的目的

ThreadDemo.java ThreadDemo是一个Activity,UI在这里面更新



LoadImageRunnable.java 线程处理的事都在这里面


UI布局


下面是运行后效果图:

第一次测试:


图一 : 正在加载图片,请稍后 图二 :加载完毕 三张图片都显示出来


第二次测试:


图三:我故意把第二张图片地址给改错了,加载时出现异常 图四:加载完毕 没有出现第二张图片


我在网上找的几张图片相对于手机屏幕来说其实是很大的,但是加载手机屏幕上就变小了,原因是我在

布局时设置了ImageView的高度,另外我没有设置水平滚动条,其实图片是可以不被缩小的显示在屏

幕上。解决方法很简单,把整个Activity设置成同时拥有水平和垂直滚动条就可以搞定。OK,解决方

可以参考我的另外一篇文章实现一个Activity存在水平和垂直滚动条

这次学习笔记到此为止!睡觉

分享到:
评论

相关推荐

    Handler结合thread 异步加载网络图片

    本示例通过Handler和Thread的配合,实现了一个简单的网络图片异步加载功能。这里我们将深入探讨这两个组件的工作原理以及如何在实际项目中应用它们。 首先,我们了解下Android的线程模型。Android UI是单线程模型,...

    handler结合Thread异步加载网络图片

    下面是一个简单的使用`Handler`、`Thread`和`Looper`异步加载网络图片的步骤: 1. **创建后台线程**:创建一个新的`Thread`实例,并在`run()`方法中执行网络请求。例如: ```java Thread downloadThread = new ...

    Handler+ImageView

    以下是结合`Handler`和`ImageView`实现图片加载的基本步骤: 1. **创建Handler实例**:在主线程中创建`Handler`实例,通常在Activity或Fragment的`onCreate()`方法中初始化。 ```java Handler handler = new ...

    Android 多线程 异步加载网络图片 ThreadTest

    2. 采用handler+Thread模式实现多线程异步加载; 3. 引入线程池来管理多线程 4. 引入线程池,并引入内存缓存功能,并对外部调用封装了接口,简化调用过程 参考:...

    异步加载网络图片

    在Android中,可以使用AsyncTask、Handler、Looper、Thread或第三方库如Retrofit、Volley、OkHttp配合Picasso、Glide等图片加载库来实现异步加载。这些库不仅提供了异步加载功能,还支持图片的缓存策略,以减少网络...

    WebView+Thread(内置Handler)实现应用内浏览器demo1

    在Android中,WebView通常用于加载和展示网页内容,而Thread和Handler则用于解决UI线程与后台任务之间的通信问题,避免阻塞主线程。 【知识点详解】 1. **WebView**: Android系统提供的一个可以加载网页的组件,它...

    ListView异步加载网络图片

    在Android中,可以使用多种方式实现这一目标,例如AsyncTask、Handler、Thread、IntentService或现代的Loader框架等。这里我们主要讨论使用SoftReference来优化内存管理的方法。 SoftReference是一种弱引用类型,它...

    android+threadhandler AsyncTask

    在Android应用开发中,处理耗时操作如网络数据获取、图片下载等是非常常见的需求。为了保证用户界面(UI)的流畅性,我们需要将这些任务放到后台执行,这就是所谓的异步处理。本文将深入探讨两种主要的异步处理方式...

    android 子线程URL加载网络图片

    - 在Android中,可以使用Handler、AsyncTask、IntentService、Thread、Runnable等组件来实现异步加载。 2. **Handler与Looper**: - Handler通常与Looper和Message配合使用,允许子线程向主线程发送消息,进而...

    Thread_Handler_MessageDownload.zip

    总结来说,"Thread_Handler_MessageDownload"项目通过实践展示了如何在Android中使用Thread进行后台操作,利用Handler和Message在工作线程与主线程之间进行高效、安全的通信,实现网络图片的异步加载。这种方法对于...

    Android实现ListView异步加载图片

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

    android gallery 只加载当前图片 图片缓存 异步 下载

    比如,可以使用AsyncTask、Handler、Thread+Runnable或者现代的异步库,如RxJava、LiveData等来实现异步加载。 4. **图片下载**: 当图片不在本地缓存中时,需要从网络上下载。通常,我们会使用HTTP或HTTPS协议...

    Android 用handler机制联网获取图片.zip

    标题提到的“Android用Handler机制联网获取图片”是一个典型的Android应用开发场景,涉及网络请求、图片下载以及主线程与工作线程间的通信。 首先,我们需要理解Handler、Looper和Message三个核心组件的关系。...

    Android开发中批量异步加载网络图片的方法

    在Android应用开发中,批量异步加载网络图片是一项常见的需求,尤其在开发涉及大量图片展示的App时,如社交应用、电商应用等。这个过程通常涉及到网络请求、线程管理、图片缓存以及UI更新等多个方面。下面我们将详细...

    andriod异步加载网络图片资源demo

    然而,由于AsyncTask的局限性(如生命周期管理问题),现在更推荐使用Handler、Thread、ExecutorService或上述提到的图片加载库,它们提供了更灵活和强大的解决方案。 6. **UI更新**:在主线程中更新UI是安全的,...

    Android Thread Handler

    在Android应用开发中,线程(Thread)和Handler是实现多任务并行处理以及界面更新的关键组件。Android系统是一个单线程模型,主线程(UI线程)负责处理用户交互和绘制界面,而其他工作通常需要在后台线程中执行,以...

    Android异步加载网络图片二例

    在Android开发中,异步加载网络图片是一项常见的需求,它能提高用户体验,避免因为网络请求导致的界面卡顿。本文将介绍两种实现方法,并涉及ProgressDialog、Handler、Thread/Runnable、URL、HttpURLConnection等...

    handler加线程模式实现android应用的异步加载

    - 创建工作线程:用于执行图片加载等耗时任务,如AsyncTask、Thread或者IntentService。 - 发送消息:在工作线程中,通过Handler对象的`sendMessage()`或`post()`方法发送一个Message或Runnable对象,携带图片数据...

    异步加载图片显示到控件上

    如果你希望自定义加载过程,可以使用`AsyncTask`或者`Thread`配合`Handler`来实现: ```java class LoadImageTask extends AsyncTask, Void, Bitmap> { private ImageView imageView; public LoadImageTask...

Global site tag (gtag.js) - Google Analytics