`
changkunyang
  • 浏览: 30878 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

说说android异步加载的三种方式之线程的使用

 
阅读更多

 

第一种,使用线程

实用场景一:比如需要联网的操作,我们知道互联网的效率相对来说是不恒定的,有时候快,有时候慢,如果遇上网络不好的时候,程序一直处于联网等待状态,一方面给用户不好的体验,另一方面很容易出现经典的ANR异常。

实用场景二:比如带图片的listview的显示,我们知道通常的图片比文字信息大很多,如果listview带图片,我们同步的获取文字和图片,这样的加载效率会比较慢,通常的做法是会在主线程里去拉取文字信息,然后另外一个线程异步的加载图片。

异步加载信息时需要注意的一个问题,那就是在手动开启的线程中不允许直接操主线程(也即是activity)里面的UI,不过Android提供了一套比较完善的方案。

第一步:使用ProgressDialog对话框,它是一个带进度条的信息提示框,比如经典的提示语“正在。。。。请稍后。。。”,该对话框一旦被show,直到被dismiss都将一直显示。

使用示例:

	ProgressDialog progressDialog = ProgressDialog.show(Context,"提示框的标题", "提示框的主体内容...", true, false);


 

    第二步:使用线程执行比较耗时的操作

new Thread() {
	@Override
	public void run() {
		try {
                	//此处处理耗时的操作
		} catch (Exception e) {
			handler.sendEmptyMessage(1); 
		} finally{
			//向handler发消息  
			handler.sendEmptyMessage(0); 
		}
	}
}.start();


      第三步:使用Handler更新UI。

      前边说了,手动开启的线程里面是不能直接操作主进程里面的UI,所以android提供了一个Handler类来接收线程的消息,然后更新UI。

/**
	 * 用Handler来更新UI
	 */
	private Handler handler = new Handler() {
		@Override
		public void handleMessage(Message msg) {
			if(Constant.DEBUG) Log.i(tag, "msg.what="+msg.what);
			switch (msg.what) {
				case 0:
					//线程执行成功后在此更新UI
                                        //撤销对话框
                                        progressDialog.dismiss();
                                break;
				case 1:
					Toast.makeText(Context, "异常", Toast.LENGTH_LONG).show();
				break;
				
			}
		}
	};


 

分享到:
评论

相关推荐

    Android异步加载图片例子

    在这个"Android异步加载图片例子"中,我们将探讨如何在Android应用中实现这一功能。 首先,我们需要理解Android的主线程(UI线程)与工作线程的区别。主线程负责处理用户界面交互,而工作线程则用于执行耗时操作,...

    Android异步加载网络图片(线程)

    在Android应用开发中,异步加载网络图片是...总之,Android异步加载网络图片结合LruCache和线程回调是一种高效且实用的策略,可以显著提升应用的性能和用户体验。理解并掌握这些知识点对于Android开发者来说至关重要。

    Android异步加载文字

    本项目“Android异步加载文字”将探讨如何在Android Studio中实现在后台加载文本数据,避免UI卡顿,提高应用响应速度。 首先,我们需要了解Android的多线程模型。Android应用的主要执行线程被称为UI线程,负责处理...

    android异步加载图片

    "Android异步加载图片"是一个常见的需求,它涉及到用户体验优化、内存管理以及线程安全等多个方面。这里我们将深入探讨这个主题,并结合提供的"ImageLoader-develop"可能是一个图片加载库的源码,来讲解相关的知识点...

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

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

    Android 异步加载图片实现_图片缓存.zip

    综上所述,Android异步加载图片和缓存策略是提升应用性能的关键技术。通过合理使用工作线程和缓存机制,可以显著改善用户体验,降低系统负载。在实际开发中,选择合适的图片加载库,并结合最佳实践,能够帮助我们...

    Android 图片异步加载 加载网络图片

    在Android应用开发中,图片加载是一项常见的任务,尤其是在处理大量图片或者网络图片时,为了提供良好的用户体验,我们通常会采用异步加载的方式。本篇将深入探讨Android平台上的图片异步加载策略,以及如何加载网络...

    Android 异步加载解决方案

    本文将深入探讨Android的异步加载解决方案,尤其是通过`AsyncTask`类实现的方式。 `AsyncTask`是Android SDK提供的一种轻量级的异步处理工具,适用于快速执行少量的后台任务。它具有三个泛型参数:`Params`(输入...

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

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

    Android 异步加载图片缓存优化.rar

    总的来说,Android异步加载图片缓存优化是通过合理利用内存和磁盘资源,配合高效的异步处理,为用户提供流畅的图片浏览体验,同时避免了由于大图加载引发的内存问题。开发者可以通过学习这个压缩包中的源码和文档,...

    Android异步加载图像小结 (含线程池,缓存方法).rar

    在Android应用开发中,图像加载是一个常见的...以上就是关于“Android异步加载图像小结(含线程池,缓存方法)”的主要知识点。在实际应用中,开发者应结合项目需求,合理选择和优化这些技术,以提供流畅的用户体验。

    android ExpandableListView子集异步加载+IphoneTreeView

    而"android ExpandableListView子集异步加载+IphoneTreeView"这个主题主要关注如何在`ExpandableListView`中实现子集的异步加载以及模仿iPhone风格的树形视图(`IphoneTreeView`)。 首先,让我们深入理解`...

    android Gridview 异步加载网络图片

    综上所述,"android Gridview 异步加载网络图片"是一个涉及Android UI设计、多线程编程、图片处理、缓存策略以及第三方库使用的综合主题。通过学习这个示例,开发者可以提升应用性能,提供更优质的用户体验。

    Android异步加载的学习demo

    这个"Android异步加载的学习demo"旨在帮助开发者理解和掌握如何在Android应用中实现高效、流畅的图片加载。 首先,我们来了解异步加载的基本概念。在Android系统中,主线程负责处理UI更新和用户交互,而其他任务,...

    Android实现ListView异步加载图片

    Android 实现 ListView 异步加载图片是一种常见的技术,旨在提高应用程序的性能和用户体验。本文将详细介绍 Android 中实现 ListView 异步加载图片的方法,并对相关的技术概念进行解释。 1. 异步加载图片的必要性 ...

    android listView 异步加载图片

    这里的“android listView 异步加载图片”指的是在不阻塞UI线程的情况下,从网络、本地存储或其他来源加载图片到ListView中的技术。 这篇名为“ImageLoader”的Java文件很可能就是一个实现图片异步加载的工具类。在...

    Android异步加载例子

    在"Android异步加载图片"这个标签下,我们还可以探讨使用Loader API,这是Android提供的另一种异步数据加载机制,适用于更复杂的数据加载场景。Loader能够监控数据源的变化,并在数据更新时自动重载数据。 文件...

    Android使用GridView异步加载(弱引用)网络图片(支持点击查看)Demo

    在Android开发中,异步加载网络图片是一项常见的需求,特别是在数据密集型的界面如GridView中。这个Demo展示了如何实现这一功能,同时支持用户点击图片查看大图。以下将详细讲解这个Demo涉及的关键知识点。 首先,...

    android异步加载图片源码

    总结来说,Android异步加载图片涉及到多个层面的技术,包括线程管理、缓存策略、图片处理和网络通信等。`AsyncListImage`这个项目为我们提供了一个实际的应用场景,让我们有机会深入研究这些技术,并将其应用到自己...

Global site tag (gtag.js) - Google Analytics