Android 学习点滴(2)


上次提到过《Hello android》这本书,最近两天翻了一下。该书是基于Android 1.5写的,出版时间为2009年,四年后的今天Android已更新至4.3版,从这个角度看,似乎有点老旧。但对一个没有Android开发背景的初学者来说,它仍不失为一本入门级的好书。

像我这样的初学者刚接触一个新技术时,都会很容易一下子被许多新概念弄得一头雾水,然后在技术森林里胡乱摸索。这样费时费力且往往没有什么收获。而《hello android》的作者Ed Burnette,显然考虑到这些情况。

全书分成五部分,其中主体三部分,再加序言和附录。主体三部分,从知识积累角度说,是渐进式的。

第一部分为Android入门介绍,包括两章,第一章Quick start,即设置开发环境,运行第一个程序;第二章Key concepts,介绍Android开发所用的五个方面的基本概念,包括一个大图、一个生命周期、四个核心概念、使用资源、安全和权限。

一个大图。也就是众多学习资料中都会出现的那张图,如下:

这张图是从开发者的角度对Android整个生态系统的第一印象,行话叫作系统架构,system architecture。分为四层,最上面一层就是平时Android手机常用的各种应用;第二层是应用框架,这一层跟一般开发者关系最大,直接打交道;第三层是各种常用库,Android运行时的核心库及Dalvik虚拟机,这基本是属于Android应用开发的支撑环境,开发者也需要与这一层打交道,但几乎是只使用、不改动;第四层是linux kernel,可以看出,Android系统是架构在Linux系统基础之上,这一层主要是管理移动设备硬件,对开发者而言,几乎是不可见的。

四层结构也可以分成三层,即中间的两层合为一层,这样可以表示成三种层次的抽象。第一层抽象,即物理世界到系统世界的抽象,用Linux Kernel,将各种类型的移动设备一网打尽,统一成一种面貌,映射到Linux系统空间中;第二层抽象,是从Linux世界抽象到Android世界,无论是库及虚拟机,都为提供这种抽象做的准备,从此我们基本可以不用管linux世界发生什么;第三层抽象,是从Android世界到人类世界,这种抽象就通过可以为人们提供各种服务的Android应用实现。概括一下,这张大图有四层,也可以视为三层抽象,将物理世界、Linux世界、Android世界、人类世界,四界之间铺设一道坦途。

一个生命周期。这个在其他学习资料中很少出现,可以看作是本书在介绍Android基础知识方面的一大亮点,也是Android应用有别于传统意义的Windows\Linux系统桌面应用的重要特征
。有必要多看几眼。上个图:

计算机专业的同学面对这张图时应该是“心有戚戚焉”。与操作系统课程中的进程调度图极像,只是多了一些东西。没错,就是多的这些东西,让Android应用与Windows或Linux系统桌面应用看起来不一样。用作者的话说,It's alive。另外,在Android开发过程中,如果试图去找类似于C程序中的main()入口,恐怕会大失所望,这是困绕C/C++程序员的地方。这一点作者在书中没提,后面找个地方画出另外一张图,以帮助理解。

   注:在Android开发者网站上,看到API Guides时看到一张图,更清楚:


四个核心概念。Android SDK定义了很多对象,需要开发者熟练使用。其中最常用的有:Activites, intents, services, 和content providers。Activities可以理解为用户接口屏幕。应用可以定义多个activity用来处理程序的不同阶段。每个 activity 都需要存储自身的运行状态,以便于在应用生命周期的其他阶段进行重载。Intents是描述特殊行动的一种机制。在Android中,几乎每一件事都是要通过intent。因此,有很多机会来替换或重用组件。如,有一个"发送邮件"的intent,你在应用若要发送邮件,可以引用这个intent,或者你在写一个新的邮件应用,可以注册一个activity来处理邮件发送。这样的话,下一次发送邮件时,别人就能通过选择你的程序来代替标准邮件程序。Services是运行于后台的没有用户直接干预的任务,有点像Unix的守护进程。Android内建许多服务,可以方便地通过API进行访问。一个Content provider就是一个包裹起来的数据集,可以被自定义API读写。这也是应用之间共享全局数据的最佳方式。

使用资源。在开发者的眼中,资源的概念并不陌生,应用需要的“非编程产生”信息,都可以称为资源,如字符串、位图等等。Android项目文件夹res内的各种资源在生产时编译到应用中。资源编译器会生成一个名为R的类,其中包含应用所用各种资源的标识符。对资源的描述都是放在对应的XML文件中。

安全和权限。每一个应用都运行在自己的Linux进程中,一个进程访问另一个进程的内存被硬件禁止,每一个应用都是一个特定的用户ID,它所建立的任何文件,都不能被其他应用读写。另外,访问某些关键操作是有严格规定的,必须要在AndroidManifest.xml文件中,特别做出权限请求。最常见的权限包括:INTERNET、READ_CONTACTS、WRITE_CONTACTS、RECEIVE_SMS、ACCESS_COARSE_LOCATION、ACCESS_FINE_LOCATION。如,若要监视接收的短信息,需要在Manifest文件中指明:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.google.android.app.myapp" >
     <uses-permission android:name="android.permission.RECEIVE_SMS" />
</manifest>



第二部分为Android基础。共4章,即第3—6章。作者结合“数独游戏”的设计制作,像搭积木一样,一层一层介绍Android开发用到一些最基本的知识,包括第3章“设计用户接口”、第4章“探索2D绘图”、第5章“多媒体”、第6章“存储本地数据”。
第三部分为Beyond the Basics。共4章,即第7-10章,涉及到的内容包括连接互联网、定位及识别、SQL数据库操作、基于OpenGL的3D绘图。附录包括两部分内容,一是Java VS.the Android language and APIs;二是Hello,Widget。

以上是这本书内容的大致介绍,其中第一部分说的比较多一些,原因是自己看书的进度。另外,这本书PDF版仅有200多页,属于技术类书籍中比较少的一本。因此,不论是从全书的结构,书中安排的内容,以及全书的体量来看,这本书确实的是比较适合入门。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值