免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1123 | 回复: 0
打印 上一主题 下一主题

Study on Android【一】--概述 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-19 16:45 |只看该作者 |倒序浏览
  【IT168 技术文档】如果你还不知道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做的还是非常好的。。。
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/85805/showart_1426020.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP