- 一旦安装到了一个设备,每个应用生存在它自己的安全沙箱
- 系统给每个应用分配一个独立的Linux用户ID(这个ID只由系统使用并且对应用来说是不可知的)
- Android系统实现了最小特权原则。默认,每个应用仅仅访问需要工作的组件,并不多做其他的事。这样创建了一个非常安全的环境,应用不能访问系统没有授权的其他部分
- 有可能安排两个应用共用一个linux系统ID,在那种情况下,它们能互相访问相互的数据。为了节约系统资源,拥用相同用户ID的应用,可能也被安排运行在同一个Linux进程中并共享相同的VM(应用必须被签名成同样的认证)。
- 一个service是长期运行在后台,执行操作的组件,甚至可以为远程进程工作
- 广播接收者,不能显示用户界面,但当一个广播事件发生时,它们可以创建一个状态通知器,去提醒用户.但更多情况下,一个广播接收者只是一个其他组件,想要做极小量事件的一个"gateway”(途径).举例,它可能发起一个服务,去执行关于某个事件的一些工作.
- 任何一个应用能启动另一个其他应用的组件,是Android系统设计独一无二的方面(aspect)
- 不像大多数其他的系统的应用,Android应用,没有单个的入点(比如没有main()函数).
- 你的应用不能直接访问其他应用中的组件.但时,Android系统也能激活其他应用的组件.你必须传一个消息给系统,指定你想要启动的组件,然后系统为你激活这个组件
- 4个组件中的其中三个组件---activities,serivces,和broadcast
receivers----是被叫做intent的异步消息激活的.在运行时,Intents把某个的组件与其他的组件互相绑定,而不管这个组件是否属于你的应用还是其他的应用(你可以把它们想像成一个消息,用于请求一个其他组件的动作). - 内容提供者,不会被intents所激活.进一步讲,它是内容解释者(ContentResolver)所请求的目标所激活的.内容解释者,处理所有与内容提供者的直接交换.所以组件不需要执行与提供者交换,而是调用ContentResolver对象方法.(这一句不好理解。)为了安全起见,组件请求信息与内容提供者之间有一个抽象层
- 可以通过使用sendBroadcast(),
sendOrderedBroadcast(), 或者 sendStickyBroadcast()三种方法来广播一个intent - Activites,services和内容提供者,若没有在manifest中声明,对系统来说是不可见的,即将永远不会运行。但是,广播接收者即可以在manifest中声明,也可以在代码中动态创建(做为BroadcastReceiver对象)并且通过registerReceiver()方法向系统注册。
- 在你的manifest文件中用<supports-screens>
元素声明,以明确指出你的应用支持的屏幕尺寸.屏幕大小:小,正常,大和极大
屏幕密度:低密度,中密度,高密度,和极高密度 - 如果你的应用必须要一个特别的输入硬件,那么你应在你的应用中使用<uses-configuration>元素声明.但时,应用必须要一个特别的输入配置的情况是极少的
- 比如照相机,光敏器件,蓝牙,或某个版本的OpenGL,或者触模屏的精度,你应该用
<uses-feature>元素声明你的应用支持的特征 - 你应该用<uses-sdk>元素,声明最小API级别,这样就指出了那些API将被采用.
- 为你的应用声明所有必要性的要求非常重要.因为,当你把你的应用发布到Android市场.市场,将用这些声明信息来过滤出,那些应用在每个设备是可用的.
同样,你的应用应该只能在满足所有你应用需求的设备上才可用
Android文档学习01_Android基础
时间: 2024-10-18 23:14:21