android程序使用用java语言进行编写的,android sdk工具把代码,数据,资源共同编译成一个
android安装包,以.apk后缀结尾。所有的代码被包进单个的.apk文件中,android设备课可以直接
安装apk程序。
Once installed on a device, each Android application lives in its own security sandbox:
程序安装到设备上之后,每一个android程序都有一个单独的安全沙箱:
1.android操作系统是一个多用户的Linux系统,每个程序分配一个单独的user。
2.默认情况下,系统分配给每个程序一个单独的Linux user ID,这个ID只能被系统使用,程序不可见。
系统为把每个文件都设置了访问权限,因此只有user ID 被分配给这个程序,才能去访问这些文件。
3.每个进程都有自己的虚拟机实例,因此程序代码都是单独运行的。
4.默认情况下,每个程序运行在自己的LInux进程中。android开始进程的时候是在程序组件需要执行的时候。
结束进程的时候是:当程序不需要再执行的时候,或者系统为其他程序回收内存的时候。
android系统采取最小特权原则。没有分配访问某资源的权限,就无权访问某资源。
当然,程序之间也可以共享数据,可以使用系统的服务。
1.两个程序共享相同的LInux user ID,他们之间可以相互访问各自的文件。为了节省系统资源,
有相同user ID的程序可以运行在相同的Linux进程,可以共享同一个VM实例(两个程序必须用同意一个签名)
2. 程序可以通过请求访问权限去访问要访问的资源,比如用户的通讯录,短信息,外存储,相机,蓝牙等。
这些权限必须是在程序安装的时候由用户授予。
应用程序组件是android程序的基本组成部分。
四大程序组件:
1.Activity
activity代表一个用户界面的一个屏幕。
2.Service
Service是在后台运行的处理长时操作,或者运程进程通信的组件。
3.Content Provider
用来向其他程序共享数据。
4.Broadcast receiver
系统级别的公告。
android系统设计的一个独特的方面是,程序可以开启其他程序的的组件。
激活组件
activity,service,broadcast receiver的激活是通过intent的异步消息。
intent(意图)在运行的时候绑定特定的组件(可以这样认为:从另一个组件请求的一个执行),不管这个组件
是不是属于自己程序的还是属于其他程序的。
一个意图通过一个Intent对象创建,这个对象定义了激活指定组件或者指定类型的组件的消息,
意图可以试明确的,也可以是非明确的。
Manifest 文件
用来声明组件
定义用户权限
声明api版本
声明使用的硬件和软件
声明引用的lib等
注意:activity,service,content provider必须在manifest中定义,不定义无法使用。
broadcast receiver即可以在manifest中定义,也可以在代码中动态注册。