没有开发过Android、IOS等移动端的开发,记录从零开始学习Android开发历程。学过、用过那么多的语言、开发模式却很少留下记录,一方面是由于曾经的工作环境影响,网络受控;一方面是自己长久以来对文字的尊重,总以为非深思熟虑不能成文,非别具匠心不可以发表;还有就是自己的懒惰,懒得动笔。

人的状态总还是多少受环境影响的,时得清闲,又对Android有几分兴趣,虽然Android已经发展多年,现在学习Android可能太晚,但我不求先行,只求窥其一斑;不求文章准确精美,只求雁过留声。记录下学习Android的过程,若是能给路人的带来点启发,那就是无意间点积德善举,若是错误百出,那也不要怨言,因为每片博文均一气写成,逻辑、文字错误均没检查,甚至写完后再没有看过,我本就把博文当做随笔,留个纪念而已。

我这人学东西一般是不求甚解,无论什么语言,什么框架均喜欢先学习整个结构如何,事件如何处理、数据如何存储、界面如何展示、各页面如何调用等。正如每次买到一本新书,总喜欢把先把目录和前言好好看看,有个大概的映像再去分解阅读。我这样的人往往难得深入,一般是了解结构、方法,遇到问题再由点解决问题,就好像是一座楼房只建了框架,哪层卖出去了才建哪层的围墙,从外看来,不是栋美观高上大楼房,但也不会影响居住,总是难得讨人喜欢罢了。

Android这些年来积累的学习资源可为丰富至极,但我一般还是喜欢看官网的资料,一来准确,二来权威。所幸Android的官网资料丰富,不久有讲解,还有实例(Android Studio中可以直接导入example),大部分还有中文说明,真是方便。开发工具当然选的是Android Studio,Google已经宣称不再支持Eclipse的Android插件了。Android开发的官网是:https://developer.android.com/guide/index.html。学习的方式也按我以往的基本步骤:官网基础知识,典型开发模式和开发框架,典型实例、调试、测试、打包及更新,自定义Demo。

在官网目录中有Training和Api Guides两个目录,我大略看了一下,可能在学习过程中以Api Guides为主,部分例子可参考Training和Samples。

如官网所说:Android 提供了一个内容丰富的应用框架,支持您在 Java 语言环境中为移动设备开发创新应用和游戏。Android不仅仅应用于我们熟知的Pad、Phone,还应用于智能终端、各类传感器等多种移动终端。

Android应用提供多个入口点:Android 应用都是将各种可单独调用的不同组件加以组合开发而成。例如,组件可以是为用户界面提供一个屏幕的单个“Activity”,也可以是在后台独立执行工作的“服务”。这一点真的很吸引人,在一般的应用中只有唯一的入口,如VC、VB等应用只有一个入口main函数。在Android中都是组件化的,每个组件可以相互独立,又可以相互调用组合完成一个完整的事务,我感觉现在逐渐升温的微服务以及云计算里的Dock采用了相似的思路,将功能独立化,不仅使得节约了开发成本,也提高系统健壮性,可测性,好处多多。嗯,我不禁迫切想知道组件之间是如何独立运行又相互调用的。

Android操作系统是一种多用户的Linux系统,Android应用采用Java语言编写,最终应用将数据、代码和资源一起编译到一个.apk的存档文件。一个应用以不同的Linux用户,具有唯一的Linux用户ID,只能访问本用户资源,如果希望多个应用访问共同资源可以采用以下方法:

1.为不同应用设置同一Linux 用户id

2.通过调用其他组件访问相关资源

Android有四类组件:

1.Activity

主要用于用户界面展示

2.Service

用于在后台长时间运行,没有界面,跟Windows等后台服务类似。

3.ContentProvider

  主要用于数据等存取,如:文件系统、SQLite 数据库、网络上或您的应用可以访问的任何其他永久性存储位置。

4.BroadcaseReceive

用于响应系统等各类消息。

如何启动组件?

四种组件类型中的三种 — Activity、服务和广播接收器 — 通过名为 Intent 的异步消息进行启动。组件间相互调用,主要依赖于Intent。各组件调用等方法不同,但都通过Intent传递数据。

1.Activity启动方法

  • 直接调用采用startActivity(),
  • 需要获取返回值采用startActivityForResult()

2.Service启动方法

  • 直接启动采用startService(),
  • 需要绑定该服务采用bindService(),即启动者销毁,绑定的服务同时销毁。

3.BroadCast启动方法

通过sendBroadcast(),sendOrderedBroadcast() 或 sendStickyBroadcast() 等方法来发起广播

4.ContentResolver调用方法

采用query()调用。

Android项目文件目录

1.mainfests

项目文件清单:声明项目中的各个组件,组件的访问权限等。

2.java

项目的源码目录:包括源码、测试代码

3.res

项目资源文件:包括页面布局、本地化设置、全局的字符串定义、图标等。





更多相关文章

  1. Android(安卓)API Guides---Web Apps
  2. IBM谷歌等工程师撰写Android开发教程合集
  3. 借一个项目谈Android应用软件架构,你还在套用MVP 或MVVM吗
  4. Android(安卓)架构简介
  5. Android开发者e周报 第6期
  6. Android系统架构——揭开Android系统框架的面纱
  7. Android新手入门FAQ
  8. Android(安卓)程式开发:(一)详解活动 —— 1.1 Activity的生命周期(
  9. Android拨号器的实现

随机推荐

  1. android process and thread
  2. android 笔记 --- Android各种访问权限Pe
  3. QCom Camera Development
  4. Android(安卓)Apk 反编译,Apk 修改以后再
  5. Android(安卓)- 支持不同的设备 - 支持不
  6. 【android内核分析-启动】Android(安卓)
  7. Android中Input型输入设备驱动原理分析(
  8. Android(安卓)AIDL 跨进程服务 Proxy/Stu
  9. Android应用程序进程启动过程的源代码分
  10. Android(安卓)系统下模拟触点击的功能与