一、基础介绍
Android应用程序是使用Java编写的,使用Android SDK工具将应用程序数据和资源打包成一个apk文件,即可在Android设备上安装运行。
每一个Android应用程序都运行在它自己的安全沙盒里:
-
-
- Android系统是一个多用户的Linux系统,每个应用程序都是一个不同的用户;
- 默认情况下,系统的每个应用程序分配一个独一无二的Linux用户ID(ID仅仅被系统所用,对应用程序是未知的)。系统为一个应用程序中所有的文件设置权限,因此只有使用分配给该应用程序的用户ID才可以访问它们;
- 每个仅此都有他自己的虚拟机VM,应用程序之间的运行是相互隔离的;
- 默认情况下,每个应用程序都运行在自己的Linux进程。当需要执行任何应用程序组件时,Android启动进程,当系统不再需要或者必须为其他应用程序回收内存的时候,关闭进程。
以上设计原则实现了“最小特权原则”。
注意:只有应用程序拥有相应的权限,才能访问设备数据信息。
二、应用程序组件
每个组件都是系统进入一个应用程序的不同的切入点,并不是所有的组件都是用户实际的入口点,其中一些还相互依赖。但是每一个组件都有自己的实体并扮演了一个特定的角色——每个组件都是帮助定义应用程序的整体行为的是一个特有的功能块。
1、Activities
一个Activity就代表了一个单独的用户界面。
通过继承Activity类来实现。
2、Services
Service组件,就是在后台运行执行耗时操作,或者执行远程进程工作的,没有用户界面。
通过继承Service类来实现。
3、Content providers
一个Content provider管理着一个共享的应用程序数据集合。可以将数据存储在文件系统,SQLite数据库,网络,或者其他的持久存储位置上,
Content providers也可以用来读写私有的应用程序数据。
通过继承ContentProvider类来实现,并且必须实现一系列允许其他应用程序执行事务的API集合。
Content Provider旨在给其他应用程序访问自己的应用程序数据的统一接口。
4、Broadcast receivers
Broadcast Receiver是一个响应整个系统的广播公告的组件。