.Net码农学Android---系统架构和基本概念
至此,你应该已经完成以下前期准备事情:
1.安装完JDK
2.安装完SDK(并在Manager中进行相关版本的更新)
3.相关IDE(如eclipse)
4.安装完ADT
5.安装完AVD(如果你是真机模拟的话也可以不安装)
前期环境搭建基本完成,并按照网上的教程可以运行出HelloWorld,确保可以流程走的通。
所谓会当凌绝顶,一览众山小。我学习新东西时总会从系统或全局的角度对它进行一个总览,这样才能从更高的角度去把握它,而且你对接下来的学习也会有一个系统的认知会让之后的学习更有条理和针对性。
一.接下来就是要介绍一下Android的基本系统架构了

在最外的是负责直接和用户交互的应用层,就是通常意义上我们看得见、可以下载的应用,浏览器、游戏、音乐播放器等等。
紧接着是应用的框架层,在我们开发应用时会经常调用,比如ActivityManager,ViewSystem等等,后面会介绍。
再接这就到了运行机制的JVM层了,你可以看到它不但包含了一个Runtime,而且还有一些相关的类库。
最低层是基于Linux的内核,包含了一些硬件的驱动,主要负责和硬件进行交互,比如你可以在你的应用中调用照相机,Wifi接口等都是很方便的。
二.工程组织和结构
接下来我们右键new一个AndroidApplication项目,如果找不到的话在new选项里最下面的others中如下:

一路next,建好后如下:

三.来认识一下各个文件夹都是干什么的
src:存放你的源码,比如.java文件,可以理解为vs中的类库.cs文件之类的。
gen:系统生成的东西,不要去改动,展开后如下:
,这里的R文件会经常用到,里面都是存放的一些类似注册的全局ID(后面会介绍)。
GoogleApis:就是要到的一些SDK中谷歌的接口。
AndroidPrivateLibarares:安卓的一些类库。
AndroidDependencies:安卓的一些依赖库。
assets:存放你项目中的“大”资源文件,比如图片、视频、媒体等,所谓“大”只因为在Android项目中还有一个资源文件夹res主要存放一些字体、文字、颜色等的“小”资源。
bin:这个不用说了吧。
libs:类似vs中的dll引用。
res:主要存放一些字体、文字、颜色等的“小”资源。展开如下:

主要会用到layout和values,(其他的可能也会大量用到,只不过自己也还在摸索中)
layout:用来存放布局文件
values:用来存放文字,颜色等,kv值(这里有一点需要注意,在Android开发中,为了保持项目的灵活性和避免硬编码,它会建议你把要用到的kv值存到一个文件里,在用到的地方直接引用,这就是为什么要有values文件夹的原因了)。
AndroidManifest.xml:这个文件很重要,是用来保存整个程序的相关配置的一个清单,比如项目名,版本号、启动activity、权限说明等。
三.认识完工程结构后,我们来了解几个基本概念。
因为以前在学校学过java(虽然已经忘记的差不多了),所以自己还算有些基础,对一些基本的语法和使用还是有些了解的,如果你对java一无所知,我建议你先花一两个小时看看基本的语法,比如怎么继承,怎么实现接口,相信我作为一名c#的程序员,你可能只需要10分钟就可以搞定了,因为你会发现它和c#是多么惊人的相似!
好了,到这我们才真正开始!
作为一个对移动应用开发倍感神秘的初学者来说,我只想知道,我应该怎么开始,它到底是怎么实现并显示在手机上的。
我们打开layout文件夹中的activity_main.xml,看到了吧,是不是似曾相识(控件+布局+代码)

这个就是程序的启动页,类似于main方法 ,就是入口,当然你也可以自己设置其他的入口页。
几个概念:
1.Activity:这个是最常用到的一个概念,你可以把它理解为当前活动得屏幕,就是呈现在手机上的一个页,联想web页。
这是Activity的生命周期

Activity的可视生命周期为OnStart()开始直到OnStop()结束(可能会看不见内容,但会保留相关资源)
Activity的前台生命周期为OnStart()开始直到OnStop()结束(在最前面和用户进行交互)
2.包名:java中的“包名”类似我们c#中的命名空间,一个“包”就是一个dll引用文件。不过我觉得eclipse中有一点做得很好,即你在用到一个方法或类时不用再顶部import它好像会自动的帮你完成,vs中好像还得手敲一下。
java中要确保包名唯一所以一般用公司域名的反写来命名比如com.letchoice.HelloWorld。
三.几个快捷键和相关设置
1.格式化代码:ctrl+shift+F(有代码洁癖同学首选)
2.在你格式化xml文档的时候可能会有些问题,如下设置即可

3.对于用惯了vs的你来说,可能已经适应了vs的智能提示功能,在eclipse中这点可能做得没有vs好,你只有在输入“.”之后才能出现提示,如果你想让它像vs中一样随时智能提示和补全代码的话,你可以window—>preference打开设置面板如下

将标识的地方的”.”改成“abcdefghijklmnopqrstuvwxyz.”保存就ok了。
4.Xml代码提示和补全功能设置如下:

即将图中标识地方改成"<=:abcdefghigklmnopqrstuvwxyz@ "即可。
自己对于Android开发和java的使用还都处于摸索当中,难免出现疏漏和错误,还望大家多多批评指正,和你们共勉!
.Net码农学Android---系统架构和基本概念的更多相关文章
- Android系统架构与系统源码目录
前言 技术博客终于可以恢复正常的更新速度了,原因是我编写的进阶书籍的初稿已经完成,窃以为它将会是Android应用书籍中最有深度的一本,可以说是<Android开发艺术探索>的姊妹篇.在这 ...
- (转)android系统架构及源码目录结构
转自:http://blog.csdn.net/finewind/article/details/46324507 1. Android系统架构: android系统架构采用了分层架构的思想,如下图所 ...
- Android源码分析一 Android系统架构
一 Android系统架构 Linux内核层(Linux Kernel):Android系统基于Linux2.6内核,这一层为Android设备各种硬件提供了底层驱动,如显示驱动.音频驱动.照相机驱动 ...
- Android进阶(十一)Android系统架构讲解
如果说一个成功男人的背后会有一个默默支持的女人的话,那么一个优越稳定的平台背后必有一个成熟的系统架构所支撑着.那么,Android的系统架构是怎么样的呢?从下图我们可以从整体上有个大致的了解(图片来源 ...
- Android进阶加密-第1章-Android系统架构-读书笔记
第 1 章 Android 系统架构 1.1 Android 系统架构 Android 系统架构分为五层,从上到下依次是应用层.应用框架层.系统运行库层.硬件抽象层和 Linux 内核层. 应用层(S ...
- Android 笔记之 Android 系统架构
Android笔记之Android系统架构 h2{ color: #4abcde; } a{ color: blue; text-decoration: none; } a:hover{ color: ...
- Android零基础入门第2节:Android 系统架构和应用组件那些事
原文:Android零基础入门第2节:Android 系统架构和应用组件那些事 继上一期浅谈了Android的前世今生,这一期一起来大致回顾一下Android 系统架构和应用组件. 一.Android ...
- Android系统架构说明介绍
Android系统架构说明介绍 Android系统架构和一些普遍的操作系统差不多,都是采用了分层的架构,从他们之间的架构图看,Android系统架构分为四个层,从高层到低层分别是应用程序层.应用程序框 ...
- 我收藏的技术知识图(每张都是大图)关于XX背后的知识、技术图,例如:Linux、Nginx架构、PHP知识卡、机会、HTML5移动、Android系统架构、YII架构的典型流程、Css知识表
我收藏的技术知识图(每张都是大图) HTML5Linux/Unix系统设计思想读书笔记 LinuxMVCJava线程MVCSpring MVCCSS3Nginx架构VimCliCommandsPHP知 ...
随机推荐
- css+div网页设计(二)--布局与定位
在网页设计中,能否控制好各个模块中在页面中的位置是非常关键的,与传统的表格定位不同,css+div定位方式更加的灵活,本篇博客将为大家介绍css+div的布局与定位. 一.盒子模型 由图可以看出 盒子 ...
- 使用JSON进行数据传输的总结
一.选择的意义 在异步应用程序中发送和接收信息时,可以选择以纯文本和 XML 作为数据格式.为了更好的使用ajax, 我们将学习一种有用的数据格式 JavaScript Object Notation ...
- jQuery中json对象的复制(数组及对象) .
1.jQuery自带的$.map方式: $.map(json, function (n) { return n; }); 这种方式原来用于复制数组还可以,今天用它复制数组中的某一条记录,发现字段名称丢 ...
- angularJs中上传图片/文件功能:ng-file-upload
原文技术交流:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/angularjs-ng-file-upload/ 在做网站的过程中难 ...
- python中string模块各属性以及函数的用法
任何语言都离不开字符,那就会涉及对字符的操作,尤其是脚本语言更是频繁,不管是生产环境还是面试考验都要面对字符串的操作. python的字符串操作通过2部分的方法函数基本上就可以解决所有的字符串 ...
- 转: 透过CAT,来看分布式实时监控系统的设计与实现
评注: 开源的分布式监控系统 转:http://www.infoq.com/cn/articles/distributed-real-time-monitoring-and-control-syste ...
- ubuntn14.04 32位安装hadoop2.7.2
1. 创建用户一枚, sudo addgroup hadoop sudo adduser -ingroup hadoop hadoop_lcc 2. 为新创建的用户添加sudo权限 sudo gedi ...
- django 学习-13 Django文件上传
1..vim blog/views.py from django import formsfrom django.http import HttpResponse 1 2 from dja ...
- PHP中变量,常量,超级全局变量小结
//一般来说,变量在函数无法在函数体中无法访问,但是常量可以.//超级全局变量确实可以的,地址栏上的参数/*$GLOBALS //变量注册的信息$_GET //地址栏参数$_POST ...
- 行列转换 pivot
select * from ( select isnull(c.type,'其他') type,d from ( select ID,Record_code,code,day(thedate) d f ...