APP下载

Android应用程序的性能优化分析与研究

2013-09-12陆继翔

机械设计与制造工程 2013年3期
关键词:刀锋用户界面按键

陆继翔,李 映

(摩托罗拉移动南京研发中心,江苏南京 211019)

Android应用程序的性能优化分析与研究

陆继翔,李 映

(摩托罗拉移动南京研发中心,江苏南京 211019)

针对从Android 2.3系统升级到Android 4.0系统应用程序响应速度慢的问题,提出了整体解决方案,优化Android系统内存管理设置,改进硬件资源,如显示屏和触摸屏等参数配置,调整应用程序用户界面布局结构,从而提升了Android应用程序性能,增强用户体验。

Android;性能优化;内存管理

Android 4.0-冰淇淋三明治(ICS)是 Android系统智能手机,平板电脑的新版本。它统一智能手机和平板电脑系统,将只有一个版本,同时支持智能手机、平板电脑,这将解决Android 3.x系统和Android 2.x操作系统版本分化的问题。开发者分别为平板电脑和智能手机开发的不同应用也将可以在Android 4.0上通用。Android 4.0系统具有以下特性:Android统一版本;电视手机平板融合;全新设计的UI人性化体验界面;回归原点,保持开源特性;升级Linux内核到3.0以上版本;音频、视频Play Store提供资源下载;针对多核处理器优化;运行速度全面提升;集成Google电视和Chrome OS的智能停放;为OEM提供了官方的主题引擎;比拟GameCenter的游戏中心等。

由于Android 4.0操作系统有着卓越的用户体验和性能优势,很多手机用户和运营商要求手机生产商对已上市手机提供升级包,从Android 2.3升级到Android 4.0操作系统。本文就摩托罗拉Android刀锋智能手机软件升级开发过程中遇到的应用程序性能优化的问题,给出了分析及解决方案。

1 问题分析

测试部门报告显示,刀锋智能手机升级拨号应用程序从Android 2.3到Android 4.0时,遇到了程序对触摸事件反应慢、反应错误等问题。测试人员试图在拨号应用程序中用手指快速地点其中的数字按键,结果往往会退出当前拨号应用程序,而跳转到最近通话应用程序或电话簿应用程序。最近通话应用程序和电话簿应用程序分别位于左右两个相邻的标签窗口。例如,他试图快速拨打“8476518453”,结果会跳转到最近通话应用程序,用户体验欠佳,如图1所示。

图1 Android4.0拨号应用程序界面

为了解决快速定位问题,本文采用比较分析法,尝试在其他3个不同的软件版本中来重现这个问题,并进行比较分析和定位。重现步骤定义:用户持续来回点击数字按键8和数字按键9,当手指快速从数字按键8移动到数字按键9时,它们可能产生轻微的滑动手势(从左至右)。在不同软硬件版本上的测试结果见表1。

由表1测试结果可以发现,Android 4.0的拨号应用程序和最近通话应用程序对相应手指滑动支持是Android4.0新推出的功能,可以让用户很容易地在电话簿应用程序、拨号应用程序和最近通话应用程序之间相互切换。所以Android 4.0系统将一些基于2个按键手指快速触摸操作视为滑动事件,拨号应用程序转到下一个选项卡对应的应用程序;而Android 2.3系统则视为2个不同的触摸或按键事件。

表1 不同软硬件版本拨号应用程序测试结果

为了验证上述分析,本文使用了Android 4.0系统提供的系统开发辅助功能,选择其中与用户界面相关的2项:显示触摸操作和指针位置显示。进入设置菜单→开发人员选项菜单→用户界面→选择指针位置和显示触摸操作。

指针位置:在屏幕上层叠加一层与当前进程不冲突的显示平面,以横坐标、纵坐标交叉的定位方式,定位用户手指在屏幕上划过的轨迹来支持多点的坐标位置显示,如图2所示。

显示触摸操作:为触摸操作提供视觉提示,用渲染的大手指图标来显示触摸。如图2所示。

图2 指针位置和显示触摸操作

打开指针位置和显示触摸操作开发辅助功能后,在快速触摸数字按键时,可以看到屏幕上显示了一个连接2个触摸点的蓝线显示(滑动指示),如图3所示,从而验证了本文的分析和判断。

图3 触摸和滑动事件

2 方案

基于上述分析,在大量阅读Android 4.0源代码,特别是Android用户交互图形事件的实现,本文提出了一个整体解决方案,该方案结合了系统虚拟内存动态配置,手机硬件参数调整和优化并将应用程序用户界面的布局进行重组。下面将逐一展开阐述。

2.1 系统虚拟内存大小重新配置

在Android系统中,build.prop和default.prop是相应的设备配置文件,它们保存了一些系统级的设置和信息,如Android版本号、设备制造商名称、网络运营商名称、设备CPU版本和显示屏分辨率等。本文导出谷歌原生态Galaxy Nexus设备配置文件并与摩托罗拉刀锋的设备配置文件进行比较,发现Android 4.0引入了新的虚拟内存大小属性配置,因而与之前Android 2.3虚拟内存大小定义和配置相冲突。Android 4.0引入了一些新的虚拟内存配置属性(见表2)。

表2 Android 2.3和Android 4.0虚拟内存配置属性比较

由表2可以看出,dalvik.vm.heapsize在 Android 2.3和Android 4.0中有不同的含义。实际上Android 2.3的dalvik.vm.heapsize定义是对应Android 4.0 的 Dalvik.vm.heapgrowthlimit[1]。升级代码实现需要相应的改变。Android 4.0的dalvik.vm.heapsize使用仅对应于特殊情况:如果应用程序配置文件AndroidManifest.xml中加上“Android:largeHeap=TRUE”,系统将在启动和运行该应用程序时使用此设置,从而给它提供超大虚拟内存,像地图或3D游戏等大型应用程序。

刀锋手机从Android 2.3升级到Android 4.0后,dalvik.vm.heapsize保持42M。可以通过运行命令行“adb shell getprop|grep heap”查看到对应设置值。这样某些第三方应用程序在其Android-Manifest.xml定义“android:largeHeap=true”后,仍只能使用42M系统内存,这将影响它运行时的流畅性和用户相应速度。例如Android 4.0自带的移动应用程序VideoEditorGoogle.apk就使用此属性。

Android 4.0系统由于要支持多种硬件配置的设备,所以Android 4.0系统的源代码提供了4种硬件配置所对应的虚拟内存大小设置参考文件:

高分辨率的智能手机虚拟内存大小设置为phone-hdpi-dalvik-heap.mk:[2]

配有512M内存的高分辨率智能手机虚拟内存大小设置为 phone-hdpi-512-dalvik-heap.mk:[2]

配有1024M内存的超高分辨率智能手机虚拟内存大小设置为 phone-xhdpi-1024-dalvikheap.mk:[2]

普通平板电脑虚拟内存大小设置为

刀锋智能手机硬件配置是512M内存的高精度分辨率智能手机,相应地在刀锋手机Android 4.0版本的实现中增加了内存属性dalvik.vm.heapstartsize和 dalvik.vm.heapgrowthlimit,参照 Android 4.0参考设置为:

并将系统缺省内存大小配置从42M增加到48M,同时升级了内存管理。

2.2 手机硬件参数调整和优化

在Android系统里,有一些和硬件配置相关的参数,通过对它们进行调整和优化,确保手机的最佳整体性能。本文对触摸屏和显示屏参数进行了调整和优化。

2.2.1 触摸屏

Android系统中TOUCH_SLOP简称触摸屏灵敏度,是在移动设备上基于识别一个运动的缩放像素密度距离,其数值越大越灵敏。我们发现在刀锋Android 4.0软件中TOUCH_SLOP值设置为8,而刀锋Android 2.3软件中设置为16。在分析手机快速触摸正常工作日志和非工作日志后发现,当手指快速移动时,触摸操作被系统作为手指滑动操作,系统进而触发相应的拖动动作处理。增加TOUCH_SLOP值将提高门槛,从而可降低这种事情误处理的发生,同时也参考谷歌原生态Nexus手机的TOUCH_SLOP值,因为它是xhdpi超高精度分辨率设备,所以TOUCH_SLOP值设置为32。刀锋手机是hdpi高精度分辨率设备,所以建议刀锋手机TOUCH_SLOP值设置为16。这样可以在大部分情况下避免不必要的滑动事件。

2.2.2 显示屏

在Android系统中,参数 windowsmgr.max_events_per_sec定义是Android窗口管理器可以在1s内处理的事件总量。如果总事件数超过此门限值,一些超过的事件将不会被窗口管理器处理。

谷歌原生态的Nexus手机在系统配置文件中没有设置“windowsmgr.max_events_per_sec”值(可以运行命令行“adb shell getprop”),通过阅读源代码,发现它使用了系统默认值,即Android窗口管理器每秒处理90个事件。Android 4.0代码注释给出了这个缺省值设置的一些解释:“考虑到实际事件发生率之间的不连续性,事件发生的异步性,或事件源源不断持续发生而事件处理的不同步性,建议Android窗口管理器每秒处理的总事件数设为屏幕刷新率的1.5倍。理想情况下,会使用Display.getRefreshRate(),系统使用‘60’作为默认假设刷新率。”

现在谷歌Nexus手机的显示屏刷新率是60Hz,和刀锋手机相同。在Android 4.0源代码的注释中,笔者在刀锋手机的配置文件中把 windowsmgr.max_events_per_sec值从70增加到90。因此,窗口管理器将及时处理更多的交互事件,从而使得刀锋手机对用户输入事件响应更快。

2.3 应用程序用户界面布局重组

通过阅读和比较Android 4.0拨号应用程序的源程序和刀锋手机拨号应用程序的源程序,笔者发现,Android 4.0拨号应用程序用户界面是2层布局,12个按键和应用窗口,而刀锋手机拨号应用程序布局较为复杂,增加了12个按键之间的空白部分UI布局(如图4和图5所示),这样用户在使用拨号程序时有可能触摸到这些空白部分,造成拨号应用程序不能响应触摸事件。而在Android 4.0 Nexus手机上是不会发生的。因此,笔者删除了12个按键之间空白部分UI布局,并简化了应用程序用户界面,进行布局重组,从而使应用程序执行效率得到了相应的提高。

3 结束语

由于本文工作只针对刀锋手机的平台实现了性能优化,因此下一步工作将着眼于更加普适性的优化工作,将其他一些手机平台上特性整合到优化方案中,从而实现在更广泛的平台上均得到Android性能的提升,增强用户体验。

图4 谷歌Nexus智能手机的拨号应用程序用户界面

图5 刀锋智能手机的拨号应用程序用户界面

[1]谷歌公司.Android 4.0的兼容性定义[EB/OL].(2012-01-25)[2012-10-12].http://source.android.com/compatibility/4.0/android-4.0-cdd.pdf.

[2]谷歌公司.Android 4.0源代码[CP/OL].(2012-02-04)[2012-11-19].http://code.google.com/p/android.

The Analysis of Android Application Performance Optimization

LU Jixiang,LI Ying
(Motorola Mobility Nanjing Software Center,Jiangsu Nanjing,211102,China)

It analyzes sluggish problems at upgrading applications from Android 2.3 to Android 4.0,gives the solution to improve applications performance from synergy way,optimizes the system memory configuration,display hardware and touch hardware parameters.This improves the Android application performance.

Android;Performance Optimization;Memory Management

TP319

A

2095-509X(2013)03-0082-04

2012-12-07

陆继翔(1973—),男,江苏南京人,摩托罗拉移动南京研发中心高级研发经理,硕士,主要研究方向为智能手机应用框架和系统。

猜你喜欢

刀锋用户界面按键
基于CiteSpace的国外用户界面体验图谱量化分析
基于有限状态机的按键检测程序设计
物联网用户界面如何工作
UI用户界面色彩设计研究
我是刀锋
一种多方向导光按键结构设计
春天
刀锋
基于B/S的跨平台用户界面可配置算法研究
按键的多种状态检测及消抖处理方法