• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android开发:优化ListView实践解析

Android开发:优化ListView实践解析

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了android开发listview,android开发优化,android开发性能优化,android开发内存优化,android开发 json解析等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Android开发:优化ListView实践解析


 在看了一些vogella的文章之后,发现关于android listview性能优化这一段很有意思,于是实践了一下,经过优化,性能确实提升不少!

先看看优化前和优化后的比较:

优化前的log截图:

Android开发:优化ListView实践解析 帮客之家

优化后的log截图:

并且,在不停滚动ListView的过程中,优化之前会出现ANR现象,在AVD上特别容易复现:

然后,优化后显得很流畅,附上对于的log截图:

下面附上相关代码分析:

ListView中的每一个Item由一个ImageView 和一个TextView组成

Layout:

 
  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3. android:layout_width="fill_parent" 
  4. android:layout_height="fill_parent" 
  5. android:orientation="horizontal" > 
  6. <ImageView android:id="@+id/imageView" 
  7. android:layout_width="wrap_content" 
  8. android:layout_height="fill_parent" />" 
  9. <TextView android:id="@+id/textView" 
  10. android:layout_width="wrap_content" 
  11. android:layout_height="fill_parent" 
  12. android:layout_marginLeft="15dp" 
  13. android:gravity="center_vertical" /> 
  14. </LinearLayout> 

Activity继承自ListActivity,我故意增加了Item,方便测试,效果更明显:

 
  1. public class ListViewDemo extends ListActivity{ 
  2. private final String[] mItems = new String[] { "Android", "iPhone", 
  3. "WindowsMobile", "Blackberry", "WebOS", "Ubuntu", "Windows7", 
  4. "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", 
  5. "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", 
  6. "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu", 
  7. "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", 
  8. "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", 
  9. "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", 
  10. "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu", 
  11. "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", 
  12.  "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", 
  13. "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", 
  14. "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu", 
  15. "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", 
  16. "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", 
  17.  "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", 
  18. "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu", 
  19. "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", 
  20. "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", 
  21.  "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", 
  22.  "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu", 
  23. "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", 
  24. "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", 
  25. "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", 
  26. "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu", 
  27. "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", 
  28. "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", 
  29. "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2" }; 
  30.  @Override 
  31. public void onCreate(Bundle savedInstanceState) { 
  32.     super.onCreate(savedInstanceState); 
  33.      ListViewArrayAdapter adapter = new ListViewArrayAdapter(this, mItems); 
  34.       getListView().setAdapter(adapter); 
  35.     } 
  36. } 

然后custom Adapter,优化之前的adapter:

 
  1. @Override 
  2. &
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Android开发:优化ListView实践解析
  • android开发之路08(ListView&amp;Adapter),androidlistview

相关文章

  • 2017-05-26使用flume+kafka+storm构建实时日志分析系统
  • 2017-07-22Android触摸事件分发机制完全解析《一》
  • 2017-05-26历代安卓版本回顾(使用者角度+开发者角度)长期更新!!!,安卓开发者
  • 2017-05-26nginx设置泛域名解析的https证书过程
  • 2017-05-26开源图表库MPAndroidChart使用介绍之饼状图&amp;折线图&amp;柱状图,图表mpandroidchart
  • 2017-05-26缓存之 ACache
  • 2017-05-26Android 权限的实现,Android权限实现
  • 2017-05-26APK瘦身记,如何实现高达53%的压缩效果,apk53%
  • 2017-05-26andriod Spinner,andriodspinner
  • 2017-05-222.3.4 ImageView(图像视图)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android中AlarmManager使用示例(持续更新,已经更改),alarmmanager
    • 如何使用Android Studio开发Gradle插件
    • Android自定义实现循环滚轮控件WheelView
    • Android 应用程序集成FaceBook 登录,androidfacebook
    • 仿QQ空间根据位置弹出PopupWindow显示更多操作效果,popupwindow
    • android四大组件之Broadcast,androidbroadcast
    • android:ScrollView监视什么时候滑到底部
    • 多线程中使用curl致coredump问题
    • overridePendingTransition,transition
    • mongodb3.0.7生产环境扩容存储记录

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有