扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
随着移动平台的发展和其应用的不断改善,质量成为决定成败的关键。用户要求他们选择安装的应用响应快、性能好,如果某个应用不能提供卓越的功能和稳定的用户体验,那这样的应用注定会被很快卸载。
创新互联建站凭借专业的设计团队扎实的技术支持、优质高效的服务意识和丰厚的资源优势,提供专业的网站策划、成都网站制作、做网站、网站优化、软件开发、网站改版等服务,在成都十多年的网站建设设计经验,为成都上千中小型企业策划设计了网站。
尽管现在android智能手机和平板电脑的运行速率越来越快,但开发者仍需牢记,应用的运行环境仍受到电池和处理器等诸多资源的限制。以下是给android应用开发者10个建议,以便能在当前和以后的所有android设备都能运行出最佳效果。
1.首先要有良好的编码习惯
一个优秀的android应用开发者应该善于运用常识、完善的算法和标准设计模式。要有资源意识,打开了就要记得关闭,尽量做到晚获取,早释放。这些由来已久的编码准则同样适用Android应用开发,尤其是使用基础设备服务时。
2.让阻塞操作远离主UI线程
通过使用AsyncTask、线程、IntentService和自定义后台服务,保证应用的灵活性。使用加载工具简化游标等长时间加载数据的状态管理。当有其他程序运行时,不能让应用滞后或中止。
如果一个操作需要消耗较多时间和资源时,取消该操作,换成异步处理,这样应用就能保持响应,用户可以继续各种操作。该方法适用磁盘读写、访问内容提供方、数据库和互联网,以及解析和其他需要花费较长时间的任务。
3.使用最新的android SDK版本和API
使用android平台的最新产品,保证应用紧跟android的更新步伐。随着android平台的不断发展,部分功能可能被弃用或被更好的功能取代,核心API接收了bug修复和性能改进,新API有助于android应用开发者编写出更稳定的应用。要明白最佳的做法总是随着时间的推移而变,聪明的android应用开发者应该总是站在整个平台的最前沿。
4.考虑使用StrictMode
从android 2.3开始提供了一个新的类StrictMode,该类可以用于捕捉发生在应用程序主线程中耗时的磁盘、网络访问或函数调用,可以帮助开发者改进程序,使主线程处理UI和动画在磁盘读写和网络操作时变得更平滑,避免主线程被阻塞。
5.发布前禁用或尽量减少调试
如果android应用开发周期较长,很可能在应用中内置了一些日志或调试代码,在发布前确保这些功能已经最小化或完全禁用。
6.确保UI布局简单优雅
简单的屏幕不仅方便阅读,还能加快加载速度。与其在一个单一屏幕上堆砌太多不必要的功能,不如花时间去开发优雅的用户界面。简单优雅的UI不仅能提高应用性能,还能提高用户使用该应用时的效率。
7.根据目标设备调整应用资源
为尽可能高效地被加载,需要根据具体设备的配置调整相应资源,尤其是图片资源。为使应用包文件合理适用不同设备,首先可只添加运行该应用需要的核心资源,然后再根据具体设备下载相关内容。
8.使用Hierachy Viewer可视化调试工具
Hierachy Viewer能很方便地在开发者设计,调试和调整界面时,快速定位问题,解决问题,提高开发效率。
9.使用layoutopt进行布局优化
Layoutopt是一款简单的命令行工具,可帮助找到不必要的控件嵌套以及缩减布局资源,从而使应用变得可能“苗条”。控件越少、布局层次越浅,性能就越好。
10.使用Traceview及其他Android工具进行分析
Android SDK随带了很多用于应用分析的工具,其中最受欢迎的是Traceview,这款图形工具可以帮助调试和找到应用中的性能瓶颈。
基本没什么区别,主要是横竖屏,分辨率的问题,平板屏幕大,平板开发更多的使用Fragment,使得屏幕能够充分的利用。
出处:安卓巴士 ()
首先是尺寸的适配,android平板和手机相比,由于pad的大屏特性,屏幕的尺寸和分辨率的差别就很明显,例如以下平板信息:
小米平板:4.4.4 densityDpi:320 size:1536x2048
华为平板:5.1.1 densityDpi:240 size:1200x1920
华为荣耀某平板:6.1 densityDpi:320 size:1200x1920
三星平板:6.0.1 densityDpi:320 size:1600x2560
同样的一套mdpi下的layout或者values放在上面华为荣耀平板和三星平板上显示差别就很大。下面是开发中关于设计的一些心得:
1. 开发中保持不增加布局层级的情况下采用百分比weight属性;针对不同尺寸的设备百分比缩放是体验最完美的,但由于实际开发中复杂界面如果采用百分比,无疑增加了层级复杂度,反而降低了性能,降低了可维护性和扩展性。
2. layout中使用的dp/sp值采用@dimen引用方式写进dimens.xml里面;为了方便采用多个values文件夹例如values-sw600dp,values-1280x720等针对特定屏幕适配。自然也可以采用layout-1280x720这样的来区分不同布局,但如果只是尺寸上的适配,无疑用dimens维护几套尺寸值是最容易的,还可以写个读写文件工具,修改一个values里的dimens文件后更新到所有的values文件;
3. 以上面的华为荣耀平板为例,采用sw(smallwidth)的方式进行适配,比较简单的计算方式,以mdpi(160)为标准,此平板的screenWidthDips = 1200/(320/160) = 600dp,所以values-sw600dp可以适配此平板(有的平板系统宽高是包含屏幕的虚拟按键的高度);
4. 为了苛求在不同尺寸平板上的体验,采用values-1200x1920,values-1600x2560这种方式,即为每个屏幕增加尺寸适配,工作量和效率来说不会影响太大,毕竟可以通过软件工具生成多套;
除了界面方面,平板开发上的模块化采用Fragment更多,以及Fragment嵌套Fragment:
5. Fragment中调用startActivityForResult,如果要在Fragment的onActivityResult里回调处理,那么不要采用getActivity().startActivityForResult方法,且宿主Activity如果重写了onActivityResult方法的,必须调用super.onActivityResult,否则Fragment的onActivityResult方法不会回调,这点可以从Activity的源码中看出来;
6. 嵌套在Fragment里的子Fragment的onActivityResult如果需要回调则要自己处理;
7. Fragment嵌套Fragment时,在Fragment里采用getChildFragmentManager()管理子Fragment,用法跟getSupportFragmentManager()一样;子Fragment之间的通信,可以采用事件总线方案进行解耦,例如Otto/EventBus,但可读性会下降,所以详细的注释还是必要的;
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流