`
thunder_yan
  • 浏览: 113355 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Android, BaseAdapter 处理大数据量时的优化

阅读更多

Android优化 最常见的就是ListView, Gallery, GridView, ViewPager 的大数据优化  图片优化  访问网络的优化
优化的原则: 数据延迟加载  分批加载  本地缓存
数据优化   1).复用contentview  
                 2).创建static class ViewHolder
                 3).分批加载 滑动监听 或者按钮  显示更多数据  往下拖动 显示

 

图片优化  1).异步加载  
        2).本地缓存(二级缓存  内存(软引用实现),sd卡)  
                3).快速滑动时不显示图片
                4).分为核心线程池和普通线程池,下载图片等耗时任务放置在普通线程池

 

异步加载  AsynTask android 封装好的异步数据获取,包括三个方法
               doInBackground 执行在子线程中的异步方法
               onProgressUpdate 数据获取之后 执行的方法,在主线程中可以在这里更新UI界面
               onPostExecute   异步方法执行前,可以进行界面友好提示 在主线程中执行的方法
               也可以自己封装一个任务类(子线程)thread   采用线程池 这里需要自己维护一个任务列表,并且做到任务的优先级

 

对Adapter 优化的代码:

 

public class HolderAdapter<E> extends AbstractAdapter<E> {

	
	public HolderAdapter(LayoutInflater inflater, ViewCreator<E> creator) {
		super(inflater, creator);
	}

	
	private static class ViewHolder{
		public View view;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		// Holder View模式实现
		if (convertView == null) {
			ViewHolder holder = new ViewHolder();
			convertView = mCreator.createView(mInflater, position,getItem(position));
			holder.view = convertView;
			convertView.setTag(holder);
		} else {
			ViewHolder holder = (ViewHolder) convertView.getTag();
			//释放当前的View的数据
			mCreator.releaseView(convertView,  getItem(position));
			//将新数据更新到HodlerView中
			mCreator.updateView(holder.view, position, getItem(position));
		}
		return convertView;
	}
}
 
分享到:
评论

相关推荐

    android BaseAdapter listView优化

    7. **利用DiffUtil**:对于大数据量的列表,可以使用DiffUtil来计算列表之间的差异,只更新发生变化的部分,显著提升性能。 8. **避免过度绘制**:检查应用是否有过度绘制的问题,可以通过开发者选项中的“显示过度...

    BaseAdapter的使用与优化

    在Android开发中,ListView是展示大量数据常用的组件,而BaseAdapter是它的重要伙伴,用于将数据绑定到ListView的各个...通过对ListView适配器的深入理解和实践,你将能更好地处理大数据量的显示问题,提升应用的效率。

    android demo,baseAdapter的应用

    3. `getItemId(int position)`: 返回指定位置的项的ID,通常在大数据量时用于优化,但在这个简单的demo中,可能返回的是position。 4. `getView(int position, View convertView, ViewGroup parent)`: 这是最重要的...

    Android必学-BaseAdapter的使用与优化

    本文将深入探讨BaseAdapter的使用方法以及如何对其进行优化,让你在使用Android Studio开发时能写出高效且优雅的代码。 首先,BaseAdapter是Android SDK提供的一种适配器类,用于连接数据源(如ArrayList)与UI组件...

    Android中ListView,SQLite,BaseAdapter的结合源码

    在实际应用中,为了优化性能,通常会采用CursorAdapter或LoaderManager来处理SQLite数据,因为它们可以自动处理数据的异步加载和缓存,避免阻塞UI线程。同时,还可以利用ViewHolder设计模式提高ListView的滚动性能,...

    BaseAdapter最优化方法 与三种写法 可以直接作为工具类使用

    BaseAdapter是Android开发中常用的适配器,它用于将数据绑定到各种视图组件,如ListView、GridView等。然而,由于其默认实现存在性能问题,因此对其进行优化是提高应用性能的关键。本文将深入探讨BaseAdapter的优化...

    baseAdapter的getView测试

    - 在数据量过大时,考虑使用分页加载,只加载可视范围内的数据。 - 对于复杂视图,如包含大图,可以使用图片库如Glide或Picasso进行优化。 - 及时释放不再使用的资源,如解绑监听器、释放内存占用较大的对象。 ...

    android BaseAdapter AsyncTask

    在Android开发中,`BaseAdapter`和`AsyncTask`是两个非常重要的概念,它们分别用于数据适配和后台任务处理。下面将详细讲解这两个概念及其在异步加载中的应用。 `BaseAdapter`是Android SDK提供的一种适配器,主要...

    BaseAdapater加载大量数据之性能优化

    对于大数据量的列表,还可以考虑使用更高效的数据结构,如SparseArray替代ArrayList存储位置索引对应的数据,减少内存开销。或者使用RecyclerView替代ListView,RecyclerView提供了更强大的Item动画、布局管理器等...

    Android之ListView+BaseAdapter左右按键切换

    综上所述,这个项目涵盖了Android开发中关于ListView、BaseAdapter以及键盘事件处理的核心知识,是提升Android UI交互体验的一个实例。通过这个项目的学习,开发者能够更好地理解和掌握Android中数据和视图之间的...

    ListView优化+baseAdapter

    - `getItemId(int position)`:返回数据对象的ID,通常在大数据量时使用,这里可以简单地返回position。 - `getView(int position, View convertView, ViewGroup parent)`:这是最重要的方法,用于创建或复用...

    baseAdapter使用详细说明

    - **异步加载**:对于大数据量或网络数据,可使用AsyncTask或其他异步机制在后台加载数据,避免阻塞主线程。 5. **应用场景** - 当系统提供的Adapter不能满足需求时,例如需要显示复杂的数据结构或自定义交互效果...

    Android中ListView常用方式:使用BaseAdapter

    本篇文章将深入探讨如何在Android中使用BaseAdapter来实现ListView的数据绑定。BaseAdapter是Android系统提供的一种通用适配器,它允许我们将自定义的数据集与ListView进行关联。 首先,理解ListView的工作原理至关...

    BaseAdapter源码

    在Android开发中,BaseAdapter是一个核心组件,它用于将数据绑定到可滚动的视图上,如ListView、GridView或Spinner等。本篇文章将深入探讨BaseAdapter的三种常见写法,并解析其内部工作原理,帮助开发者更好地理解和...

    Android_BaseAdapter_ListView

    首先,`BaseAdapter`是Android SDK提供的一种适配器,它是一个抽象类,为各种视图(如ListView)提供了数据绑定的功能。开发者需要继承BaseAdapter,并实现其四个主要方法:`getCount()`、`getItem(int position)`、...

    ListView的使用自定义BaseAdapter

    本篇主要讲解如何在Android Studio中使用ListView,并结合自定义的BaseAdapter来实现数据的绑定和显示。 首先,我们需要在布局文件中添加ListView组件。在res/layout目录下的xml布局文件中,可以这样定义一个...

    baseAdapter绑定listView优化

    当数据源发生变化时,需调用`notifyDataSetChanged()`或`notifyDataSetChanged(int firstVisiblePosition, int lastVisiblePosition)`来通知BaseAdapter刷新视图。确保数据与视图保持同步。 9. **使用DiffUtil** ...

    listviwe_BaseAdapter_influencesml_android开发_

    3. **异步加载数据**:当数据量大时,可以考虑使用AsyncTask或其他异步加载机制,避免阻塞主线程。 六、实践案例 在`listviwe_bass2`这个文件中,可能包含了一个示例项目,展示如何将BaseAdapter应用到实际的...

    BaseAdapter的使用Demo

    BaseAdapter是Android...总之,BaseAdapter是Android开发中处理列表数据的关键组件,通过理解和熟练使用,可以让你的应用界面更加灵活和高效。理解并掌握其工作原理和最佳实践,对于提高应用性能和用户体验至关重要。

    Android自定义实现BaseAdapter的优化布局

    最后,对于大数据量的列表,可以考虑使用分页加载策略,只加载当前屏幕可见的数据,当用户滚动时再动态加载下一页。这种方式称为懒加载,能够显著减少内存占用和提高应用响应速度。 总之,优化BaseAdapter的布局...

Global site tag (gtag.js) - Google Analytics