17611538698
webmaster@21cto.com

Android开发与移动应用优化思想

资讯 0 4215 2017-11-28 11:56:29

21CTO社区导读:在开始开发之前,你需要制定你的开发计划。本文就是告诉你如何分解和制定战略去优化你的移动应用性能。


 
android-2901140_1920-1024x683.jpg

 
开发一个移动应用和如何创建一个PC端应用程序是有区别的。但是如何做到“正确”,却有很多个说法,软件开发就是如此。在本文中,我和大家讨论如何创建高性能优化的Android应用以及最佳实践。
 
1 少就是多
 
在开始之前,我们应该奉行少就是多的观念。当Android 4.1已经普及到市场97%以上时,你是否还是需要支持Android 2.3? 您是不是真需要使用兼容的库来提供高级的场景动画支持?需要第三方库来防止依赖注入吗?
 
添加的每一个库都增加应用包的尺寸,要想调入到系统内存的速度加快,应该接近Android DEX方法限制,用绝对最少的库和依赖来启动应用,即只添加所需要的,这样要好得多。即使像AppCompat库这样的功能,从Android新版本到老版本功能,也是随着后面的需要再添加。但是很多时候,你会发现大多数需要的功能都有了,我们只需要AppCompat指定的一小部分。
 
让我们的移动客户端尺寸更小,通常速度更快。不依赖太多的第三方依赖和库帮助我们的代理更简洁,也更容易让其它开发者理解。了解更多内部和外部工具,我们的知识宽度更为之受益。
 
2 简洁设计
 
优化应用程序可以在设计与开发过程中完成。在开始编写应用程序之前,先制定设计确定需要的设计组件。在整个APP中复用所有组件、图标,包括布局和其它设计属性,不仅让APP有一致的用户体验,同时减少应用程序包中包含的设计资源。
 
除了资源和空间占用外,还有一个决定设计的好机会,能够减少添加库的数量。从Android4以后的版本都支持Action Bar,Android 5后引入了工具栏(Tool Bar),使用工具栏意味着必须包含AppCompat。但是,如果我只是一个有快捷方式的基本工具栏来打开应用程序抽屉,则可能不需要工具栏,那么有Action Bar提供的功能就足够了。
 
 
同样,寻找空间来简化复杂资源的设计属性。复杂的渐变效果可以被简洁方式替代,这样用Android XML就可以,而不用再引用图片。我们会经常使用相同的图标,如上一步,下一步,菜单等类似的图片,则可以在所有需要的地方重复使用相同的资源。寻找更多的空间,一个图片过滤器就可以替换状态指示和交互的专门设计。
 
3 减少同步加载
 
如今的手机大多是多核处理器。Android应用框架设计的相当不错,可以充分利用CPU内核。我听说开发者都担心异步代码,当你在深入开发时,可能会增加代码复杂度。
 
也就是说,使用非阻塞操作是让APP应用快速响应的关键。
 
随着应用程序越来越复杂,启动画面和加载广告转换会越来越普遍。但这些大多数情况都可以避免,如果一个较小的API调用会加快屏幕的加载速度。如果在一个列表内容之前加载包含列表的布局,需要尽可能快的显示布局。
 
有时需要一些额外时间来异步实现某些功能。但信息准备就绪时,我们需要触发一个事件,或者在设计中添加更小的加载和进度指示器,尽快将演示内容呈现给用户,尽量不需要中间转换是需要的。
 
4 花更少的时间
 
我给各位关于优化的技巧就是使用最小的工具,技术以及设计,用更少的时间来实现。大多数情况下,应用的速度越快,结果也会更快。
 
比如,Android的构建系统可以使用ProGuard来减肥,包括开发与生产环境。可以配置ProGuard,保留调试所需信息,同时让移动应用尺寸更小。在开发中使用ProGuard意味着在开发过程中,加载到设备时间更少,使开发环境和生产环境之间的差异降到最低。
 
在设计上,在某个动画上要花数小时,如果这些动画对用户体验非常有用,如果不需要动画或者更简单的动画就足够了,那么去掉多余时间显示复杂的动画,这款APP可能会更快,体验更平滑。
 
在添加一个全新的画面或某个专门的用户界面之前,请和大家一起讨论是不是已经有了一个已经存在的功能可以包含此功能。用户学习成本越低,我们开发的复杂度也更低。
 
 
5 多多讨论
 
唯一需要多做的事,针对于我们的APP要多多讨论。
 
在编码前,确定你的最终结果是什么,从想法到结果如何构建。清晰自己的用户界面布局,仔细考虑未来版本中我们要添加的交互效果和功能。
 
在开始之前,我们讨论和考虑得越全面,辅以上面提到的“技巧”来优化代码。这样就意味着我们提供的是更符合预期的产品,当计划与执行一致时,结果会是优化的体验和成果。


作者:Daniel Marcus
译者:养乐多
原文:https://dzone.com/articles/and ... cepts


评论