当前位置: 代码迷 >> 综合 >> Prof Android app dev: Introduction and Get started
  详细解决方案

Prof Android app dev: Introduction and Get started

热度:95   发布时间:2023-12-06 16:42:49.0

对于Android来说,所有的应用程序都是平等的,第三方和原生安卓程序使用相同的API并执行在相同的运行时中,即使是拨号和主界面,用户都可以删除,替代任何原生程序而使用第三方的程序代替,

 

Android Software Stack

一个Linux内核和一个C/C++ libraries的集合通过application framework暴露出去

 

Linux内核:包括硬件驱动,进程,内存管理,安全,网络,电源管理,是LINUX2.6内核。

Libraries:运行在内核之上,包含了多种核心libraries如libc和SSL,以及:

 

  • 媒体lib用于播放音频视频
  •         外观管理器,提供显示管理
  •         视频lib,包括SGL,OPENGL,提供2D,3D的图形处理接口
  •         SQLite,提供本地数据库支持
  •         SSL和WEBKIT.
Android运行时 Android手机和普通Linux移动实现最大的不同,就是安卓运行时,包括核心libraries和Dalvik虚拟机
核心libraries:     提供大多数core java类库的功能以及安卓专有的类库功能。(JAVA接口)
Dalvik虚拟机:    基于寄存器的虚拟机,为单设备有效运行多实例进行了优化,其实现基于Linux内核对于县城和底 层内存的管理。


Application framework, 提供创建安卓程序的类。提供一个底层硬件的基本抽象‘
Application layer, 应用程序的层面。

Dalvik虚拟机
如果对运行速度和效率有更高的要求,可以直接使用C/C++,Android提供了NDK(native development kit)来满足这一要求。

Dalvik提供了硬件和软件层中的中间层,缓冲了具体实现和软件抽象之间的矛盾。DALVIK上执行DALVIK可执行文件,该文件被优化以节约内存。通过JAVA语言编写的源代码被编译成class文件后,再被工具转换为.dex可执行文件。

安卓程序框架
安卓鼓励组建重用,使用户可以和其他程序一起发布,共享公用的Activities,服务和数据,而这一切仍然处于安全规则的限制之下。

安卓框架包括以下组件:
  • Activity Manager, 控制activities的生命周期
  • Views, 用于建立程序的UI
  • Notification Manager, 提供通知功能
  • Content Providers 提供数据共享功能
  • Resource Manager 支持非代码的资源文件。
在ADT中运行Android程序实际上执行以下操作:
  1. 将当前项目编译并转换成Android可执行代码.dex
  2. 将可执行文件和资源文件打包成一个Android package(.apk)
  3. 启动选择的虚拟设备(如果该虚拟设备还未启动)
  4. 将程序安装到目标设备中
  5. 启动程序
理解HelloWorld程序
Activity是整个应用程序完成视觉,交互组件的基础类
Views是android中的视觉组建
资源文件存放于目录结构下的res目录,包括drawable, layout,和values子文件夹。
android的UI布局使用XML描述,这样一来,逻辑和视图就实现了解耦
为了让代码能够访问到显示组件,在XML文件的组件定义中添加ID属性,这样在代码中可以使用findViewById返回一个定义的组建的引用。

大多数应用程序都可以归类为以下几类:
  • Foreground  只有当其界面位于最前时才起作用的应用程序,比如游戏
  • Background  包含有限的交互功能,在大多数时间隐藏。比如电话界面和SMS自动回复
  • Intermittent 包含交互但是大多数工作在后台处理。比如音乐播放器
  • Widget  在主页进行显示用
Foreground应用程序
创建这类应用程序时,需要仔细考虑Activity生命周期,这样Activity能够在前端和后端平滑的切换
应用程序对于生命周期只有有限的控制权, 一个没有运行服务的后台应用程序是Android资源管理器的主要清理对象。因此,在这种情况下,如果一个应用程序不再处于前段时,需要保存好其状态

Background服务和Intent接收者
这类应用程序很少接收用户输入,常常无声的运行在后台,它们常常监听来自于硬件,系统和其他应用程序的信息和动作。

Intermittent应用程序
这类应用程序以对用户输入进行处理,但在处于非活动状态时又有一定用途。比如Chat和email。

基于硬件的设计考量
有效率,使用更少空间,面向小屏幕的设计,更差的网络连接(模拟器可以模拟网络延迟和速度)

Android通过Activity管理器和Window管理器来保证对用户行为的响应,通过以下两个条件来决定响应性:

 

  1. 一个应用程序必须对任何用户行为,比如一个按键或者一个屏幕触摸在5秒钟内进行反应
  2. 一个广播接收者需要在10秒内从onReceive方法中返回。
造成失去响应的主要原因主要有网络查找,复杂计算(如游戏中的移动),文件IO。

Android开发工具集
  • Android SDK和Virtual Device Manager
  • Android Emulator
  • Dalvik Debug Monitoring Service(DDMS) 监视和控制Dalvik虚拟机
  • Android Asset Packagin Tool(AAPT) 生成Android程序分发包
  • Android Debug Bridge(ADB) 一个C/S结构的应用程序,提供了连接运行时模拟器的连接,允许拷贝文件,安装编译的APK,运行脚本命令
  • SQLite3 访问SQLite的数据库工具
  • Traceview Android程序的图形化日志查看工具
  • MkSDCard 创建一个可以用于模拟器的SD卡镜像
  • Dx 将Java的class文件转换为.dex字节码
  • activityCreator 可以生成ant脚本用来在ADT插件外编译android程序
  • layoutOpt 分析优化layout资源,提出改进建议

  相关解决方案