如果你还不知道google的重磅炸弹Android(中文意思是机器人...感觉google取名字的天赋全部花在google这个词上了...)是什么,你可以看一下这里。如果你觉得挺没有意思,再看一下这里。如果还觉得不好玩,那下面的东西就不需要看了。。。

对我来说,Android还是很有吸引力的,不然一个MS技术的忠实走狗也不至于一下就投入java的怀抱。至于为什么?恩,等我有八卦精神的时候再使劲的侃。

在这里还是谈正事的要紧。这几天看了下Android SDK,编了几个练习,获得了一点点经验。简单的罗列一下,比较重要的内容都添上链接,也是方便我和所有需要的人查看。

按google的说法Android包括一个操作系统,一些中间件和核心应用程序。操作系统是基于Linux的,上面的东西用了些开源的、google也花了不少精力开发了其他一些东东。底层用的是C++,但所有供应用程序开发的API都是java的(伪托管操作系统?^_^)。具体内容可以看一下这里 。基本上不会与你闭着眼睛幻想的有太大区别。

Android的GUI框架,你可以从你本身的编程经验中看到很多的影子(对我而言主要是.net winform && asp.net,但感觉上很多理念与WPF类似,只是我对WPF只是走马观花的了解了一些*_*,谈不上有任何经验...)。

首先,在Android中,每一个需要显示并运行的程序都需要有一个Activity 类的派生类,从某个程度上来说它有点类似于Page的概念。每一个Activity从直观上来看就是一屏幕的内容,当你切换了屏幕,基本上就意味着你切换了一个Activity。Activity负责管理界面上的各个显示控件,最重要的,是它提供了基本的生命周期管理的函数,包括OnCreate, OnResume, OnFreeze, OnPause等等。从名字上,就可以大致看出这些函数所负责的内容,但你一定要明白他们具体分工的区别,具体情况查看一下这里 。但与Page不同的是,当一个Activity被切换出去的时候(你随时可能在你未完成所需事情的时候离开一个Activity,因为你用的是手机,你要随时准备接电话,准备迎接GF,准备与悄悄从后面摸过来的老板据理力争),你会希望回来还看到一样的内容。因此,你对Activity的生命管理尤其的重要(特别是当你了解了Android的进程管理的时候...),你可能需要在各个周期点上负责保管状态、恢复状态、传送数据等工作。

当你从一个界面切换到另一个界面的时候,就涉及到了Activity的切换。当你做这个工作的时候,你需要用到Intent,它包含切换所需的动作、(动作)分类、传送数据等信息。这个类的工作虽然简单,但内容丰富,建议仔细看看SDK,因为开发中你会反复与它打交道,而且可能你需要在两个Activity切换时做很多事情,比如传数据、做一些限定,都需要你对Intent比较熟悉。在配置文档中,你可以使用IntentFilter 对Intent进行过滤和匹配。在一个进程中,系统会维护一个Activity历史记录栈,以更好的维护Activity之间的交互。

在切换过程中(和其它一些场合),你需要传送数据。在Android中,你需要使用到一个Bundle 的类来传输。Bundle是其实一个key/value的map,不过它提供了很多API,用起来会比较方便。用这种统一格式来传输数据,在所需数据一定时会使判定比较简单,不需要太在乎是谁什么时候进行的传输。

每一个Activity还需要负责加载这个Activity所需要的显示的内容。显示的每一个部分称作一个view(你可以对应到control上),每一个都会处理键盘等交互事件、完成相应功能,并进行绘制。view的组织基本可以看成是一个复合模式,每一个view还会有相应的style,具体可以看这里。通过派生不同的view类,你可以定制你所需要的特定view(自定义控件...),它可以是简单的多view的特定布局组合,也可以是完成某种特殊功能。一般你会需要重载onDraw和onMeasure,具体可以看这里,规则还是有点小繁琐的。

但view的构造、layout的设定、样式的设定等等工作,通常不会使用显性的java代码进行编制,而是通过XML进行配置(WPF!!)。所有的资源也都是通过这种方式进行提供(查看这里)。而XML配置文件与代码的联系,是通过R类来进行的。R类是动态构造,它里面有一对的内嵌类,内嵌类里有一堆的静态int ID值。它是有系统自动根据配置文档的增删进行维护(in Eclipse...),完成从名字到ID的转换工作。而所有接受这种ID值的API,都会负责根据XML进行资源的配置。

Android的进程管理和资源管理都很有意思。通常,每一个应用程序(入口会是一个Activity的onCreate),都会占据一个进程。但这个进程是托管的!!你无法确定它何时会被回收,当系统进程空间紧张的时候,会依照优先级自动进行进程的回收(查看这里 )。由此可以看到,维护一个Activity的生命周期是多么的重要,因为它随时会被系统干掉*_*。同时,每一个应用程序的数据都是独享的。就是你存在数据库、文件的数据别的程序无法访问(其实根本是无法获知)。要在应用间共享数据,比较好的一个策略是把自己做成contentProvider,其他应用可以通过提交特定格式URL申请你的数据×—×(Why URL?...)。

除了Activity,还有就是server。顾名思义,这就是幕后英雄的角色。他们不在屏幕上占据任何位置,只是在后台默默工作。与他们交互的方法比较传统,主要是监听一些事件。当然很多时候这需要权限,因此你需要了解一些具体内容。

每一个应用都会有一个Manifest.xml,提供全局的配置。包括设置权限,设置各个Activity的属性等等。维护这个配置文件是一项基本任务(当你添加了新的Activity的时候),因为好像插件不会帮你完成这件比较琐碎的事情。

本来还看了其他更多的内容。写累了,不写了。其他等有了更多经验再慢慢写吧。如果想学个入门的话,还是建议好好看SDK。Doc基本上是把你看成一无所知(实际上,我就是这样*_*),而源码里也是包含海量的注释(只是时不时就有几个词打错...),连我如此弱的人都感觉看得不错,可想而知这SDK做的还是非常好的。。。

更多相关文章

  1. mybatisplus的坑 insert标签insert into select无参数问题的解决
  2. python起点网月票榜字体反爬案例
  3. 《Android开发从零开始》——25.数据存储(4)
  4. Android系统配置数据库注释(settings.db)
  5. Android中不同应用间实现SharedPreferences数据共享
  6. 使用NetBeans搭建Android开发环境
  7. android ndk编译x264开源(用于android的ffmpeg中进行软编码)
  8. Android(安卓)Service AIDL
  9. Android使用Retrofit进行网络请求

随机推荐

  1. APK反编译软件以及方法
  2. android之规范命名
  3. 【Android面试知识点系列】Handler相关
  4. 第十二章:Android数据存储(下)
  5. Android原生方式实现夜间模式
  6. 2013.04.10——— android listview getv
  7. 腾讯微博java(android) sdk 数据更新相关
  8. Android高级UI_Path小试牛刀
  9. Android 内存浅析
  10. Android数据库的操作之存储和获取