Android基础第一天
1. Android系统架构
应用层
包括系统内置的应用和用户自己安装的应用
应用程序框架层
Android系统中的每个应用都依赖框架提供一系列服务和系统
活动管理器(ActivityManager):用来管理应用程序生命周期并提供常用的导航回退功能.
丰富而又可扩展的视图(Views):可以用来构建应用程序,它包括列表(lists),网络(grids),文本框(textboxes),按钮(buttons),甚至可嵌入web浏览器
内容提供器(ContetProviders):使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据.
资源管理器(ResourceManager):提供非代码资源的访问,如本地字符串,图形,和布局文件(layoutfiles).
通知管理器(Notification Manager):使得应用程序可以在状态栏中显示自定义的提示信息.
系统运行库层
分为Libaries程序库和AndroidRuntime库
Linux内核层
Android的核心系统服务依赖于Linux内核,如安全性,内存管理,进程管理,网络协议栈和驱动模型.Linux内核也同样作为硬件和软件之间的抽象层.
2. Android的版本迭代
从最开始的1.6版本到现在的7.0版本
注意:目前android市场上基本2.3版本以下包含2.3版本的android手机已经很少了,市场占有率很低大概2~3%,所以大部分android应用都是直接从4.0以上系统开始进行开发兼容了
3. 两种虚拟机
Dalvik是Google公司自己设计用于Android平台的java虚拟机.它执行的是已转换为.dex(即Dalivik Executable)格式的java应用程序的运行,.dex格式是专为Dalivik设计的一种压缩格式,适合内存和处理器速度有限的系统.
Dalvik和标准JVM的差别:
Dalvik基于寄存器,而JVM基于栈.
基于寄存器执行时.花费的时间更短.
Dalvik虚拟机运行的是其专有的文件格式Dex;Dex文件格式可以减少整体文件尺寸.提高i/o操作的类查找速度
4.ART虚拟机
ART模式:Androidruntime,谷歌从Android4.4系统开始新增的一种应用运行模式,可以实现更为流畅的Android系统体验,相比Dalivik模式中出现的耗电快、占用内存大、即使是旗舰机用久了也会卡顿严重等现象,ART 模式中这种问题得到了很好的解决,通过在安装应用程序时,自动对程序进行代码预读取编译,让程序直接编译成机器语言,免去了Dalvik 模式要时时转换代码,实现高效率、省电、占用更低的系统内存、手机运行流畅。
缺点:
在安卓4.4 系统中,安装应用的时间比安卓4.4 以下版本系统更长,这主要由于应用安装过程中需要先执行编码导致,并且安装应用更占存储空间(ROM)。
5.SDK的目录结构
l add-ons 这里面保存着附加库,比如GoogleMaps
l build-tools 编译需要用到的工具
l docs 开发的离线文档
l extras 额外工具,模拟器加速器,向下兼容的jar包
l platforms 开发需要的平台,每个平台的android.jar在对应的文件夹里面
l platform-tools 开发调试的工具 adb.exe 一个重要的调试桥
l sources android.jar的源码
l system-images 模拟器创建需要的镜像
l tools 开发辅助需要用到的工具,模拟器.exe
6. Android工程目录结构
通过下图可以清晰的对比了解到主要大部分的目录结构作用
需要记住: src res目录下的layout gen AndroidMainfest.xml
7. 常见ADB命令
adb devices :列出当前连接上所有设备
adb installxxx.apk :将xxx.apk 安装到模拟器上
adb uninstall 包名 :卸载应用
adb push <本地路径> <远程路径> :将本地文件上传到模拟器上
adb pull <远程路径> <本地路径> :将模拟器上文件下载到本地
adbkill-server :杀死adb 进程
adbstart-server :启动adb 进程
adb shell :进入Linuxshell 命令行
8. ADB挂掉的三种解决办法
利用eclipse重启adb:DDMS Devices点击向下的小箭头 Reset adb
使用adb指令:adbkill-server 杀掉adb调试桥,然后运用adb start-server或adb devices 重启adb,如果不管用,找到任务管理器干掉adb的进程然后重启Eclipse
干掉占用了5037端口号的其他应用程序 : dos 命令行 输入 netstat-aon|findstr “5037”找到监听这个端口号的PID 在任务管理器干掉对应的程序
9. Android五大布局
(1) LinearLayout线性布局
线性布局LinearLayout是根据指定朝向orientation水平Horizontal 或者垂直Vertical 方向排列的布局,其最大的特点是可以给子控件按照权重weight属性分配空间
(2) RelativeLayout相对布局
相对布局RelativeLayout允许子元素指定它们相对于其父元素或兄弟元素的位置,这是实际布局中最常用的布局方式之一。
特点:以某个控件为参考,来放置其他控件的位置
(3) FrameLayout帧布局
一层覆盖一层,后面的可以覆盖前面的
(4) AbsoluteLayout(被Google 废除)绝对布局
(5) TableLayout(被GridView 替代) 表格布局