-
异步加载一般有两种:一,多线程/线程池 二,AsyncTask查看全部
-
android异步加载 1.为什么要使用异步加载? 还是android单线程模型;耗时操作阻塞UI线程 2.异步加载最常用的两种方式? 多线程\线程池;AsyncTask查看全部
-
1.声明lruCache LruCache<String,Bitmap> string是图片名字,Bitmap是图片对象 2.获取最大可用内存,将一部分内存作为缓存,创建lruCache ,重写sizeOf方法,返回图片大小,在每次存入缓存的时候调用 3.创建方法存放图片到缓存和从缓存中取出图片 4.在主线程中判断图片是否存在缓存中,如果不存在异步加载图片,存在则直接使用 5.在doInBackground方法中,从网络上获取图片,将不在缓存中的图片加入缓存 这样做,可以把下载的图片放入缓存,在刷新列表的时候不用每次都去加载图片,做到了以内存换效率查看全部
-
使用lrucache缓存图片,节省流量查看全部
-
将url图片地址转换为bitmap查看全部
-
abc查看全部
-
异步加载——图片加载优化 1. 创建一个静态String[]将所有要显示的图片的地址保存起来 public static String[] URLStrings;//用来保存当前所有需要显示的图片的url地址 public NewsAdapter(Context context, List<NewsBean> mListData) { super(); this.mList = mListData; mInflater = LayoutInflater.from(context); mImageLoader = new ImageLoader(); URLStrings = new String[mListData.size()]; for (int i = 0; i<mListData.size(); i++){ URLStrings[i] = mListData.get(i).imageUrl; }} 2. 创建一个方法,加载从start到end的所有图片 public void loadImages(int start, int end){ for (int i = start; i < end; i++){ //因为URLStrings是静态的,所以可以直接使用 String url = NewsAdapter.URLStrings[i]; //从缓存中获取对应的图片并判断 Bitmap bitmap = getBitmapFromCache(url); if(bitmap == null){ NewsAsyncTask task = new NewsAsyncTask(url); task.execute(url); mTasks.add(task); }else { //从缓存中直接获取数据让iamgeView显示,这里imageView是从url的tag得来的 ImageView imageView = (ImageView) mListView.findViewWithTag(url); imageView.setImageBitmap(bitmap); }}} 3. 改写showImageByAsyncTask(),让显示图片的操作交给scroll的监听事件 (如图) 当bitmap不在缓存时,也不去加载图片查看全部
-
abc查看全部
-
图片加载显示错误查看全部
-
异步加载——实现ListView图文混排逻辑总结 第一步 onCreate中new一个NewsAsyncTask 将url传递给getJsonData 实现异步访问 第二步 getJsonData将url转换为NewsBean对象 第三步 onPostExecute讲NewsBean的数据传递给NewsAdapter 第四步 NewsAdapter构造一个ListView数据源 并将数据源设置给ListView查看全部
-
异步加载查看全部
-
异步加载的总结查看全部
-
提高异步加载效率与效果查看全部
-
异步加载的缓存机制查看全部
-
异步加载的两种方式,多线程和async查看全部
举报
0/150
提交
取消