第二章:Android,Getting start(二)

1.1 移动设备开发

Android做了大量工作去简化手机设备的软件开发。但是去理解这些便利性后边的机制十分重要。这里有一些开发手机和嵌入式设备的很重要的因素。

这里我们会介绍介绍Android应用的最佳实践。有些时候我们也会用一些简单的方法完成一些功能,很显然这些功能可能不是最佳时间。功能和性能总要有所取舍。

1.1.1 硬件设计考虑

这些精小的可移动设备为软件开发提供了令人兴奋的机会。他们受限于屏幕大小、内存大小、存储、以及处理能力,这些都是对我们的挑战。

相对于台式机和笔记本,手机设备劣势如下:

  • ·   低处理能力
  • ·   受限制的内存
  • ·   受限制的存储能力
  • ·   小屏幕、低分辨率
  • ·   数据传输代价高
  • ·   数据传输速度慢并且有较大的延迟性
  • ·   数据链接不稳定
  • ·   电量受限

每一代的手机都在改善这方面的约束。特别是新一代的手机已经显著的解决了屏幕分辨率并且让数据存储更加便宜。但是对于我们来说,我们的最佳实践就是设计出能适应最糟糕场景的软件。

高效

嵌入式设备制造商,特别是手机设备制造商,受限于设备的大小和电池的续航能力。对于开发人员来说,在台式机和服务器硬件上应验的摩尔定律在嵌入式设备上无法同样有效。但是对于移动设备来说,在处理能力上没有明显的提升。

在实践中,这就意味着我们总是需要考虑优化代码,以便程序跑的更快、响应更迅速。假设硬件提升到一定水平,我们就不需要做这些了。

代码的高效执行在软件开发领域永远是一个大话题,我们就不在这里讨论了。以后的章节中我们会介绍Android特有的高效编码方式。现在只是提醒大家效率是非常重要的,尤其是对于资源受限的手机设备。

容量限制

闪存和硬盘技术有显著的提升,现在8GB的删除驱动和一个32GB的磁盘已经不是那么罕见了。并且TB基本的数据对于PC来说也是很常见的。现在移动设备最常见是用来存储音乐和电影,很多设备对应用的存储设定了一定的限制。

Android 设备对于应用由一个额外的约束,就是必须安装在内存中(相对于SD cards这个外部存储来说)。这样你应用编译后的大小就要考虑了。因此确定你应用对系统资源的使用是否较好是很重要地。你应该仔细考虑如何存储你应用的数据。这事说来也简单,就是我们活用Andorid的数据库和内容提供接口,重用和共享一些数据。对于小数据量的存储,像是偏好设置和状态设置,Android提供了一个优美的框架,可以在第六章中看到。

当然,这些机制不会影响你编写代码直接写文件系统当你想这么做的时候,但是在这种情况下,你需要考虑你的文件结构,并保证他是一个高效的解决方案。

一些较好的做法就是清理自己的数据。例如缓存之类的清理,以及一些不需要使用的数据的清理。

小屏幕设计

小屏幕对于我们的UI设计是一个挑战。我们需要尽量将简化UI,将重点信息放到最前面。同时,如果我们想使用触摸屏功能的时候更加要考虑用户操作的感受。屏幕的大小对操作的影响较大。

低速、高延迟

在第五章的时候我们将学习如何将互联网上的资源整合到应用中。整合有价值的互联网在线信息到应用中的能力是令人难以置信的强大。

移动互联网的网络状况不可能像我们想想的那么快、可信以及稳定,当我们设计基于互联网的应用的时候,最好考虑带宽、网络中断等意外因素,以保证我们的用户体验。

这意味着我们要保证应用能容易丢失数据链接的情况。

Android模拟器帮助你模拟了一个速度较慢、高延迟的网络形式EDGE connection,如图 2-8。不论在什么情况下,我们都要保证应用能够无缝平滑的响应请求。关于如何侦测网络链接是否可用,以及他们的速度将在第十三章介绍。


图 2-8

成本考虑

如果我们是一个移动终端拥有者,我们就应该有一个服务成本的意识,有些时候各大运营商针对LBSSMS这些服务都是收钱的,以及数据传输的网络的价格也各不相同。很显然我们需要提醒用户他们的一些行为是可能导致付费的。不论在任何情况下,我们都应该保证最小的交互成本。我们可以通过以下几个方式进行减少成本的发生:

  • ·   尽可能的传输较少量的数据
  • ·   缓存GPS结果,减少重复查找
  • ·   当程序在后台运行的时候,停止所有的数据传输,以及GPS的更新。
  • ·   降低数据的更新频次
  • ·   更新动作选择非峰值时段
  • ·   跟进用户后台数据的传输

最终结论就是操作越少,成本越小。

当我们在使用LBS服务的时候,我们可以选择一个免费的服务提供商。或者我们让用户在成本和精确度上做一个选择。

很多情况下,成本很难定义,这个时候我们最好做的就是将情况展示给用户,让用户自己来选择使用什么策略。

1.1.2 用户的环境考虑

我们永远不要想着自己的应用是用户最重要的应用。对于一个手机来说,功能的重要性可以按照如下方式排列:拨打电话》短信》EMAIL》照相》听音乐、看视频》应用工具。我们的应用时排在最后一位。

在软件设计上我们要遵循以下的一些原则:

1、规矩的行为:就是在后台不该升级的时候不要升级,在前端的响应要及时

2、无缝切换到前端后端:这个要时刻准备被手机的资源管理器给kill了,而不影响再次使用

3、礼貌:就是不随意中断其他应用的一些活动的生命周期,很多时候我们都是通过提醒完成这些

4、一个连贯的用户感受:就是不要让用户每次启动都去学习如何设置和使用

5、响应迅速:在设计的时候尽量规避应用不响应的情况。

1.1.3 Android开发

Android的设计限制需要被很好的考虑,google也提供了一些设计准则,大家可以登录网站去看看。网站地址如下:

http://developer.android.com/guide/index.html

Android的物理设计要求应用:

  • ·   良好的性能
  • ·   及时的响应
  • ·   无缝衔接
  • ·   安全

快速和有效率

在一个系统资源受限制的环境中编码,高效的代码是一个很重要的事情,android提供一些编码建议用来提高代码执行的效率。大家可以去官方网站看看:http://developer.android.com/guide/practices/design/performance.html

我们编码的时候千万别把应用当成桌面程序编写。桌面程序可是运行在2-4G的大内存中和较大的硬盘支持。

响应迅速

Android对响应是否迅速十分看重。如果超过预定的响应时间,android将会弹出一个提示框,示意是等待还是强行关闭。

这里设定的时间有两个:

 1、对用户行为的反馈必须在5秒之内,例如按钮和触摸屏幕

 2、广播接收必须在10s之内

影响这些的因素较多,例如网络、文件的IO等等

当出现不响应的时候,展示提示如 图2-9


图 2-9

开发安全的应用

应用有访问网络和硬件的能力,所以安全性作为一个重要的课题毫不奇怪。Android有自己的安全模型,我们将在第十五章的时候详细介绍。你可以先通过如下的官方链接去了解下:http://developer.android.com/guide/appendix/faq/security.html

这不会限制你使用这些钩子程序。你不但需要保证你的应用完成它的目标的安全性,还需要保证他不会被破解去攻击设备,不过你可以用以下的技术去保证设备的安全性:

·   对于任何服务或者广播都要求允许权限

·   小心从外部获取的相关资源。

·   当你的应用访问底层硬件和第三方库的时候提出警告。

保证用户的无缝体验

主要是保证应用在前台和后台工作的无缝切换,同时保证应用被终止后再启动状态的保持。就是反馈响应,这样对用户来说都是无缝体验。未来的章节中将着重介绍这些

1.2 作业

1、按照上边提到的知识自己创建一个应用

2、创建AVD以及相关的调试配置文件

3、修改布局xml文件

4、在代码中修改布局

5、增加断点进行调试

6、运行应用

1.3 Android开发工具

AndroidSDK包含一些工具帮助我们去创建、测试和调试我们的应用项目。

  • The Android SDK and Virtual Device Manager
  • The Android Emulator
  • Dalvik Debug Monitoring Service (DDMS)
  • Android Asset Packaging Tool (AAPT)、
  • Android Debug Bridge (ADB)
  • 下边的这些是一些其他的支持工具
  • SQLite3
  • Traceview
  • MkSDCard
  • Dx
  • activityCreator
  • layoutOpt

1.3.1 The Android SDK and Virtual Device Manager

被用来创建和管理Android Virtual DevicesAVD)和SDK包。AVD上运行特定版本的Android模拟器,允许你指定支持的SDK版本,屏幕分辨率,存储卡大小和硬件的能力(例如GPS和触摸屏等)

1.3.2 The Android Emulator

在你的开发电脑上的虚拟设备上模拟了一个Android的虚拟机,使用模拟器可以去测试和调试你的Android应用。

1.3.3 Dalvik Debug Monitoring Service (DDMS)

当你调试你的应用的时候,你可以是使用DDMS视图去监控和控制Dalvik虚拟机

1.3.4 Android Asset Packaging Tool (AAPT)

用来构造和发布Android的文件包,就是打包成.apk文件

1.3.5 Android Debug Bridge (ADB)

一个CS结构的应用,他提供了运行模拟器,让你复制文件,安装编译后的应用(.apk),并且能运行shell命令

1.3.6 SQLite3

一个数据库工具,能让你去访问Android创建的SQLite数据库

1.3.7 Traceview

一个图形分析工具,主要用来查看和跟踪Android应用的日志

1.3.8 MkSDCard

创建一个SD卡的磁盘空间,被用作模拟器去模拟一个外部存储卡

1.3.9 Dx

java.class文件转成Android.dex

1.3.10 activityCreator

一个脚本工具,类似于ant build,用来帮助你不适用ADT插件就能编译你的Android应用

1.3.11 layoutOpt

一个分析你布局资源的工具,并提供优化和改进建议

1.4 总结

通过本章的学习我们主要完成以下的工作:

  • · 下载并安装了AndroidSDK
  • · 在Eclipse上建立了开发环境,下载了ADT插件,并安装到eclipse
  • · 创建了我们第一个应用,并了解了他的运行机制
  • · 为我们的项目创建了运行和调试的配置文件
  • · 了解了不同类型Android应用
  • · 介绍了一些移动设备的设计理念以及一些设备的设计最佳实践
  • · 开发了一个作业性质的应用
  • · 介绍了 Android Virtual Devices,模拟器和开发工具

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值