第一种,使用线程
实用场景一:比如需要联网的操作,我们知道互联网的效率相对来说是不恒定的,有时候快,有时候慢,如果遇上网络不好的时候,程序一直处于联网等待状态,一方面给用户不好的体验,另一方面很容易出现经典的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异步加载网络图片(线程),采用LruCache算法,使用线程回调接口,实现异步加载网络图片
2. 采用handler+Thread模式实现多线程异步加载; 3. 引入线程池来管理多线程 4. 引入线程池,并引入内存缓存功能,并对外部调用封装了接口,简化调用过程 参考:...
本项目是根据慕课网《android必学-异步加载》视频教学所开发的一套异步加载网络资源的小demo.其中分别用到了多线程、AsyncTask实现异步加载的功能。 里面还包括了: json解析、网络请求、LruCache缓存、滚动优化等...
how to use my jar to download images Demo,just use about 4 line code to compete download image fastest and your application will run smoothly // download image in normal not fit Adapter Mode ...
android异步加载图片,升级版,添加多线程并发控制,可设置并发请求线程数量
提供了Android多线程访问数据库的示例,包含了最基本的数据库操作以及采用CursorAdapter异步加载数据库数据示例
android异步加载网络图片到ListView
Android的LazyLoad主要体现在网络数据(图片)异步加载、数据库查询、复杂业务逻辑处理以及费时任务操作导致的异步处理等方面。在介绍Android开发过程中,异步处理这个常见的技术问题之前,我们简单回顾下Android...
1. 异步加载图像的重要性:阐述了为何需要在Android应用中采用异步加载图像的方式,以及异步加载图像对应用性能的提升效果。 2. 线程池技术:介绍了线程池的基本概念、工作原理以及在Android项目中的应用场景。通过...
异步加载适配器,异步或线程获取图片,图片的一级缓存,滑动时停止加载等优化. AndroidStudio项目
该资源包含了三种android加载图片的方式,注释详细,简单易懂,喜欢的下载。
多线程异步加载图片并更新视图,绝对实用,简单易懂,有注释
AsyncTask 异步多线程加载Demo
利用多线程技术,异步记载图片,使得文字和图片分开显示,加快读取速度
GridView异步加载实例,更好的优化内存,提升用户体验!
异步+线程池+线程+加载网络图片.zip
1. **异步加载**:利用Android的AsyncTask或Handler机制,实现图片的异步加载,避免阻塞UI线程,保证应用的流畅性。 2. **仅加载当前页图片**:通过监听Gallery的滚动事件,仅在用户停止滚动时加载当前页面的图片,...
用于在Android开发中加载网络图片,速度超快。
Xamarin.Android开发——异步加载数据更新主线程 //异步加载数据开始 doInBackground (); //异步加载数据开始end protected async void doInBackground () {
Async Android 线程异步代码,一个线程控制UI,一个线程完成网络加载工作。