android应用基础

Android SDK工具把代码(包括数据和资源文件)编译成一个android包,以.apk为后缀。.apk文件就是一个应用,可以安装到android驱动的设备上。

一旦被安装到设备上,每个android应用都存活在它自己的安全沙箱里面:

·android操作系统是一个多用户的操作系统,每一个应用都是一个用户。

·默认的,系统指定每一个应用一个Linux user ID(这个应用不知道这个ID,这个ID只能被系统使用)。系统给一个应用的所有文件设置了权限,只有被赋予了这个应用的user ID 的应用可以以访问他们。

·每个进程运行在它自己的VM里,所以每一应用都与其他应用相互独立的运行。

·默认的,每个应用都运行在它自己的进程里。当一个应用的任何一个组件被执行时,Android启动这个组件属于的进程;当应用不需要时或需要更多的空间给其它应用时,这个进程就被关闭。

一个应用可以和其他应用共享数据,一个应用也可以访问系统服务。

·当两个应用共享一个Linux user ID是,它们可以互相访问数据和文件。有相同user ID的应用可以运行在一个进程里并且共享相同的VM(这些应用必须有相同的证书)。

·一个应用可以请求权限去访问设备的数据,如联系人、SMS消息、SD卡、摄像机、蓝牙等。所有的权限都必须在安装是被授予。

应用组件

应用组件是android应用的必须构建模块。有四种组件Activity、Services、Content Provider、Broadcast Receiver。

·Activity:一个activity代表了一个单独的用户界面。一个应用也可以启动一个不属于它的activity(如果允许的话)。

·Service:一个service是一个运行在后台的执行长时间操作或执行远程处理的组件。Service不需要用户界面。一个activity可以启动一个service并让它运行,或绑定一个service以便和它交互。

·Content Provider:一个Content Provider管理一套共享的应用数据集。可以把数据存储在文件系统、SQLite数据库、web或你的应用可以访问的其它持久存储区域。通过Content Provider,其它应用可以查询和修改数据。例如android系统提供了一个Content Provider来管理用户的联系人信息,那么其它的应用就可以通过合适的权限来查询Content Provider的一部分来读写一个特定的联系人的信息。

·Broadcast Reciver:一个Broadcast Reciver是用来响应系统级别的广播通知的。很多都是由广播引起的。广播不显示用于界面,可以创建一个状态条来广播。

一个应用可以使用其他的应用来为自己服务。如在自己的应用里要照相,只需调用已有的照相应用即可,不用自己去写一个独立的activity去照相。

当在自己的应用里启动照相程序是,它们属于不同的进程。

Android应用程序有很多进入点,没有单独的进入点(如main())。

每个应用运行在独立的拥有文件权限的进程里,并且限制访问其他的应用。你的应用不能直接访问其他应用的组件,系统却可以。所以,可以发送一个指定了要启动的组件intent消息给系统,通过系统为你启动那个组件。

激活组件

Activity、service、broadcast receiver通过intent来激活,content provider 通过ContentResolver激活。

·通过startActivity()或startActivityForResult()来启动activity。

·通过startService()或bindService()来启动service。

·通过sendBroadcast()、sendOrderedBroadcast()或sendStickyBroadcast()启动广播。

·通过ContentResolver的query()来查询content provider。

Manifest文件

在系统启动应用组件之前,系统通过AndroidManifest.xml文件来获知应用存在哪些组件。必须在这个文件中指定这个所有的组件。

Manifest文件的功能:

·标识了这个应用的所有用户权限。

·声明了这个应用的最小应用等级。

·声明了硬件和软件需求。

·应用所需要的库。

Manifest文件最主要的功能就是告诉系统一个应用的所有组件。<activity>、<service>、<receiver>、<provider>。广播可以动态的在代码里创建(如BroadcastReceiver),然后通过registerReceiver()注册到系统里。

声明组件的功能

通过<intent-filter>元素声明一个组件拥有的功能。

声明应用需求

·屏幕大小和保真度

·输入配置

·设备功能

应用资源

把资源和代码分开。

 

 

你可能感兴趣的:(android应用基础)