Android开发——09Google I/O之让Android UI性能更高效(1)

[Android 界面]ListView性能优化之视图缓存 <br />ListView是Android中最常用的控件,通过适配器来进行数据适配然后显示出来,而其性能是个很值得研究的话题。本文与你一起探讨Google I/O提供的优化Adapter方案,欢迎大家交流<br /> 正文<br /> 一、准备<br /> 1.1  了解关于Google IO大会关于Adapter的优化,参考以下文章:<br /> Android开发之ListView 适配器(Adapter)优化<br /> Android开发——09Google I/O之让Android U 阅读详情
2010-12-05 11:14        by        HalZhang,        3772        visits,        收藏,        编辑

googleio

一、前言

前几天发现09年Google IO大会关于移动应用方面的主题有一些不错的PPT,对移动应用开发很有帮助。自己看了一些,边看边和大家分享。既然是PPT就很简化了,我会根据实际情况写一些Demo供大家参考。

Android在UI优化方面可以从以下五个方面入手:

  • Adapter优化
  • 背景和图片优化
  • 绘图优化
  • 视图和布局优化
  • 内存分配优化   

    二、Adapter优化

    什么是Adapter,可以先看看我的上一篇文章,Android开发——说说Adapter那点事 Adapter与View的连接主要依靠getView这个方法返回我们需要的自定义view。ListView是Android app中一个最最最常用的控件了,所以如何让ListView流畅运行,获取良好的用户体验是非常重要的。对ListView优化就是对Adapter中的getView方法进行优化。09年的Google IO大会给出的优化建议如下:

    Adapter优化示例代码:

    1: @Override

    2: public View getView(int position, View convertView, ViewGroup parent) {

    3: Log.d("MyAdapter", "Position:" + position + "---"

    4: + String.valueOf(System.currentTimeMillis()));

    5: ViewHolder holder;

    6: if (convertView == null) {

    7: final LayoutInflater inflater = (LayoutInflater) mContext

    8: .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    9: convertView = inflater.inflate(R.layout.list_item_icon_text, null);

    10: holder = new ViewHolder();

    11: holder.icon = (ImageView) convertView.findViewById(R.id.icon);

    12: holder.text = (TextView) convertView.findViewById(R.id.text);

    13: convertView.setTag(holder);

    14: } else {

    15: holder = (ViewHolder) convertView.getTag();

    16: }

    17: holder.icon.setImageResource(R.drawable.icon);

    18: holder.text.setText(mData[position]);

    19: return convertView;

    20: }

    21:

    22: static class ViewHolder {

    23: ImageView icon;

    24:

    25: TextView text;

    26: }

    以上是Google io大会上给出的优化建议,经过尝试ListView确实流畅了许多。

    1: @Override

    2: public View getView(int position, View convertView, ViewGroup parent) {

    3: Log.d("MyAdapter", "Position:" + position + "---"

    4: + String.valueOf(System.currentTimeMillis()));

    5: final LayoutInflater inflater = (LayoutInflater) mContext

    6: .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    7: View v = inflater.inflate(R.layout.list_item_icon_text, null);

    8: ((ImageView) v.findViewById(R.id.icon)).setImageResource(R.drawable.icon);

    9: ((TextView) v.findViewById(R.id.text)).setText(mData[position]);

    10: return v;

    11: }

    以上是不建议的做法!!

    不过我们还是要怀疑一下,SO,我们还是来测试对比一下。

    测试说明:

    大家可以看到在getView的时候我们通过log打印出position和当前系统时间。我们通过初始化1000条数据到Adapter显示到ListView,然后滚动到底部,计算出position=0和position=999时的时间间隔。

    测试机子:HTC Magic

    测试实录:打开测序,让ListView一直滚动底部。:-)

  • device

    测试结果:

    两种情况在操作过程中体验明显不同,在优化的情况下流畅很多很多!

    1、优化建议测试结果:

    12-05 10:44:46.039: DEBUG/MyAdapter(13929): Position:0---1291517086043    
    12-05 10:44:46.069: DEBUG/MyAdapter(13929): Position:1---1291517086072    
    12-05 10:44:46.079: DEBUG/MyAdapter(13929): Position:2---1291517086085

    ……

    12-05 10:45:04.109: DEBUG/MyAdapter(13929): Position:997---1291517104112    
    12-05 10:45:04.129: DEBUG/MyAdapter(13929): Position:998---1291517104135    
    12-05 10:45:04.149: DEBUG/MyAdapter(13929): Position:999---1291517104154


    耗时:17967

    2、没优化的测试结果

    12-05 10:51:42.569: DEBUG/MyAdapter(14131): Position:0---1291517502573    
    12-05 10:51:42.589: DEBUG/MyAdapter(14131): Position:1---1291517502590    
    12-05 10:51:42.609: DEBUG/MyAdapter(14131): Position:2---1291517502617

    ……

    12-05 10:52:07.079: DEBUG/MyAdapter(14131): Position:998---1291517527082    
    12-05 10:52:07.099: DEBUG/MyAdapter(14131): Position:999---1291517527108    

    耗时:24535

    在1000条记录的情况下就有如此差距,一旦数据nW+,ListView的Item布局更加复杂的时候,优化的作用就更加突出了!

    OK,欢迎大家交流学习,Gtalk:ghanguo@gmail.com

    转载请注明出处!

    示例代码: GoogleIO示例代码

    ---------EOF------------------

     

     

     

     

    原文地址:http://www.cnblogs.com/halzhang/archive/2010/12/05/1896791.html

Android开发之google Zxing实现二维码扫描的代码分析 1.技术简介    在Android中实现二维码的扫描主要是通过第三方框架来实现的,主要框架是google的Zxing。现在就用该框架来实现二维码及条形码的扫描及识别,同时对于手机中存储的图片也进行识别,并通过编写一个Demo来学习并熟悉该框架的使用,为以后的实际项目应用打下基础。    二维码简介:http://baike.baidu.com/link?url=79Z-rJZKF 阅读详情

相关推荐

Unity序列帧动画输出全攻略:Recorder+Timeline实战与透明通道处理

序列帧动画是游戏开发、影视动画和UI动效中的基础技术,指将连续动作分解为一系列静态图像并按序播放,形成动态视觉效果。其原理是通过时间轴精确控制每一帧的内容与时机,实现动画的逐帧呈现。在实时渲染领域,序列帧输出技术价值显著,它能够将动态内容高质量地转换为静态图像序列,便于跨平台复用、后期合成与资源分发。应用场景广泛,包括角色动画导出、技能特效制作、宣传片素材生成等。本文聚焦Unity引擎,深入解析如何利用Recorder与Timeline工具链,高效输出带Alpha透明通道的PNG序列帧,并重点攻克透明通道处

weixin_31556767的博客 327

Google I/O之让Android UI性能更高效

一、前言 前几天发现09年Google IO大会关于移动应用方面的主题有一些不错的PPT,对移动应用开发很有帮助。自己看了一些,边看边和大家分享。既然是PPT就很简化了,我会根据实际情况写一些Demo供大家参考。 Android在UI优化方面可以从以下五个方面入手: Adapter优化背景和图片优化绘图优化视图和布局优化内存分配优化 二、Adapter优化 什么是Adap

程序猿.小小鸟 634

NVIDIA DGX Spark 开发环境深度配置与优化指南

定期系统维护每月执行一次完整的系统更新监控存储空间使用情况,及时清理临时文件定期检查硬件健康状况开发习惯优化使用tmux或screen管理长时间运行的任务配置自动化测试和代码质量检查建立完善的项目文档体系性能调优周期每月重新评估和调整系统参数根据工作负载特点优化容器配置持续监控和记录性能指标DGX Spark作为一个强大的AI开发平台,其真正的价值需要通过精细的环境配置和优化才能充分发挥。本文提供的配置方案和建议均基于实际生产环境经验,旨在帮助开发者构建稳定、高效、可维护的开发环境。

time_days的博客 3683

AndroidUI性能优化-卡顿优化

  Android性能优化分类 卡顿优化 内存优化 电量优化 网络优化 启动优化、安装包体积优化 UI界面是app和用户打交道的部分,直接对用户形成品牌意识,需要仔细的设计。性能优化都需要有一个目标,UI的性能优化也是一样。你可能会觉得“我的app加载很快”很重要,但我们还需要了解终端用户的期望。 我们可以从人机交互心理学的角度来考虑这个问题。研究表明,0-100毫秒以内的延迟对人来...

AXiuLuoS的博客 611

Workbench下列车转向架随机振动疲劳分析

结果中添加功率谱响应工具(Response PSD Tool),可以查看几何体以及远程点上的功率谱密度,如下图11所示,这里查看几何体上某一硬点的加速度功率谱密度响应曲线,如下图12所示。结果中添加疲劳工具(Fatigue Tool),查看列车转向架的疲劳寿命情况,这里采用窄带的寿命假设理论,曝光时间为1s指明计算出的疲劳寿命的基本单位是秒,寿命结果如下图14所示,可以看到最大寿命为1e35s,最小寿命为2.3542e18s,注意单位制,可再次基础上将其转换为小时或天。频域上的统计计算,软件很快计算完成。

ansysxuexizhe的博客 2602

利用 SAP Joule 提升 ABAP 开发效率的前提条件与限制全解析

综上,想要在 ABAP Development Tools 中顺利使用 SAP Joule,既要准备好 BTP、IAS、ABAP 系统与 ADT 的版本与信任链,也要理解许可证、配额、语法范围等限制。只有在这些前提全部满足后,Joule 才能真正发挥生成式 AI 的价值,帮助 ABAP 开发者从繁琐模板中解放出来,把注意力投入在业务创新与 Clean Core 改造之上。未来 SAP 还将扩展中文语境、自动修复建议以及跨系统智能代理等功能,值得持续关注。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 661

Android性能优化——I/O篇

数据库操作:

lxfeng1098751554的专栏 1301

【CASS精品教程】035:南方CASS7.1台阶画法案例大全

摘要:本文详细介绍了南方CASS7.1软件中5种台阶工具的使用方法,包括普通台阶、有边台阶、L型台阶、U型台阶和不规则台阶。重点说明各类台阶的绘制步骤和注意事项,如绘制方向(从右下角逆时针连接4个点)、台阶方向标识(白色边为下边)、台阶数自动生成不可更改等特性。同时指出高版本CASS可能存在操作差异,并配以多张示意图直观展示各类台阶的绘制过程和效果,为使用CASS7.1绘制建筑台阶提供了实用指导。(148字)

智慧空间实验室 2920

详解如何让Android UI设计性能更高效

摘要:本文为一名参加过09年Google IO大会的开发者的一篇把关于移动应用方面的主题不错的PPT改编的文章,对移动应用开发者是很有帮助的。  本文为一名参加过09年Google IO大会的开发者的一篇把关于移动应用方面的主题不错的PPT改编的文章,对移动应用开发者是很有帮助的。  Android在UI优化方面可以从以下五个方面入手:  ◆Adapter优化  ◆背景

maikol的专栏 1119

【数据库系统工程师】5.4Internet基础知识

目录一、思维导图二、知识点1.Internet 概述2.Internet 地址(1)域名(2)IP 地址(3)NAT技术(4)IPv6简介3.Internet 服务(1)域名服务(2)远程登录服务(3)电子邮件服务(4)WWW服务(5)文件传输服务 一、思维导图 二、知识点 1.Internet 概述 2.Internet 地址 (1)域名 ○ 一个完整、通用的层次型主机域名由如下4部分组成: 计算机主机名.本地名.组名.最高层域名 (2)IP 地址 ○ 每个IP地址都由4个小于256的数字组成,数字之

邓邓子的博客 911

Navicat从入门到精通:数据库管理全攻略

本文系统梳理Navicat数据库管理工具的核心应用体系。从基础的安装与多类型数据库连接入手,详解数据库与数据表的创建、修改、删除等操作逻辑;深入数据增删改查的可视化与 SQL 语句双重操作模式,结合Excel/SQL文件的导入导出场景提供实操指南。同时覆盖数据备份恢复、跨库同步等进阶功能,以及视图、存储过程等高级应用。通过对比同类工具突出Navicat的易用性与功能性优势,并针对连接失败、字符乱码等常见问题提供解决方案,帮助读者从零基础掌握数据库全生命周期管理,提升数据操作效率与安全性。

邓邓子的博客 1896

如何打造卓越自适应应用 | Google I/O 2025 不容错过的重要更新

这是一种全新的界面设计,具有个性化的视觉效果和动效,旨在激发用户的创造力,将于今年晚些时候登陆 Wear、Android 和 Google 应用。通过构建自适应应用,您能够精准触达用户当前以及未来的使用场景,从而提高用户参与度并提升应用的可发现性。在 Google I/O 2025 上 Android 带来了令人兴奋的改进,为您提供了所需的知识和强大的工具,帮助您构建卓越且用户友好的应用,使其脱颖而出。的发布,又或者您准备着手开发出色的自适应应用,那么我们的系列视频正是您的理想之选。

谷歌开发者 350

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

如何让Android UI设计性能更高效

Android在UI优化方面可以从以下五个方面入手: ◆Adapter优化 ◆背景和图片优化 ◆绘图优化 ◆视图和布局优化 ◆内存分配优化 Adapter优化 什么是Adapter? Adapter在Android中占据一个重要

bearray123 692

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

[Android]ListView性能优化之视图缓存(android.widget.ListView)

前言   ListView是Android中最常用的控件,通过适配器来进行数据适配然后显示出来,而其性能是个很值得研究的话题。本文与你一起探讨Google I/O提供的优化Adapter方案,欢迎大家交流。   声明   欢迎转载,但请保留文章原始出处:)     JavaEye社区:http://www.iteye.com     农民伯伯: ht...

weixin_33916256的博客 88

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Google Android官方培训课程中文版

Google Android官方培训课程中文版(v0.7) Google Android团队在2012年的时候开设了Android Training板块 -http://developer.android.com/training/index.html,这些课程是学习Android应用开发的绝佳资料。 我们通过Github发起开源协作翻译的项目,完成中文版的输出,欢迎大家传阅学习! 项目

ER Studio 1453

Android Google XTS

GMS全称为Google Mobile Service,即谷歌移动服务。GMS是Google开发并推动Android的动力,是Google提供的Mobile Device上的一系列应用服务。

qq_27672101的博客 2177

[Android]ListView性能优化之视图缓存

原文出处: 前言   ListView是Android中最常用的控件,通过适配器来进行数据适配然后显示出来,而其性能是个很值得研究的话题。本文与你一起探讨Google I/O提供的优化Adapter方案,欢迎大家交流。   声明   欢迎转载,但请保留文章原始出处:)      博客园:http://www.cnblogs.com     农民伯伯: http:/

xiaobubu123的专栏 490

Google发布官方集成开发环境Android Studio 1.0

原文链接:http://36kr.com/p/217653.html 原文发布时间:2014/12/09 16:21 经过2年时间的研发,Google终于在近日正式发布了面向Android开发者的集成开发环境Android Studio 1.0(稳定版)。 Android Studio是Google开发的一款面向Android开发者的IDE,支持Windows、Mac、Linux

NOT NULL 1382

ZUI易入门Android之ListView的优化的相关概念

前言   ListView是Android中最常用的控件,通过适配器来进行数据适配然后显示出来,而其性能是个很值得研究的话题。本文与你一起探讨Google I/O提供的优化Adapter方案,欢迎大家交流。 正文   一、准备     1.1  了解关于Google IO大会关于Adapter的优化,参考以下文章:       Android开发之ListView 适配器(Adapter)优化       Android开发——09Google I/O之让Android UI性能更高效(1.

轻描时光 309

Android Studio使用Google Flutter完整教程

一套代码 iOS、Android 两端运行,Google Flutter 实在太强大。。 “Flutter 可帮助你更容易、更快速的开发界面美观的移动应用。” — — Google Flutter 使用的是 Google 自己开发的网络编程语言——Dart 语言, 因此,开发者只要使用过 Java 或 JavaScript 之类的语言,那么 Flutter 也极容易上手。 2017 ...

hao_qi 2万+

Android

android是什么?  Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。  2008年9月22日,美国运营商T-Mobile USA在纽

Dianachang的专栏 826

详解如何让Android UI“.NET研究”设计性能更高效

  本文为一名参加过09年Google IO大会的开发者的一篇把关于移动应用方面的主题不错的PPT改编的文章,对移动应用开发者是很有帮助的。   Android在UI优化方面可以从以下五个方面入手:   ◆Adapter优化   ◆背景和图片优化   ◆绘图优化   ◆视图和布局优化   ◆内存分配优化   Adapter优化   什么是Adapter?   Adapter在Android中占据一...

weixin_34419326的博客 92
上一篇: android面试经典
下一篇: ListView优化三原则
androidboy365
博客等级 码龄16年 35粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值