应用程序组件:应用程序基础

- 每个安卓应用都运行在它自己的安全沙箱:
  • 安卓是多用户Linux系统,每个应用程序都是一个独立的用户
  • 每个应用都被分配到一个唯一的用户ID,应用只能访问自己的文件
  • 各进程拥有自己的虚拟机(VM),所以运行的各应用之间是隔离的
  • 缺省的,各应用跑在自己的进程。应用的任意组件被调用,安卓即启动进程。

- 最小特权法则:每个应用只访问其工作需要且仅需要的组件。
- 应用有途径与其它应用功效数据、访问系统服务:
  • 两个应用可共享同一个user ID以互相访问对方的文件。为节省系统资源,使用相同user ID的应用可以泡在同一个进程并共享同一个VM(应用程序必须被赋予同一个证书)
  • 应用可以请求权限以访问设备数据,如联系人,SMNS,SD卡,照相机,蓝牙等等。所有权限由用户在安装时赋予。

- 以上内容涵盖了关于应用程序如何在系统中存在的内容
- 下面的内容包括:
  • 定义应用程序的核心框架组件
  • 声明组件和必要设备特性的manifest文件
  • 与代码隔离开的资源
-------------------------------------------------------------------------------
应用程序组件
- 必不可少的应用程序组成部分
- 每个组件都是系统进入应用的入口
- 对于用户,未必每个组件都真的是入口,它们之间也可能互相依赖,但每个组件都是作为实体存在冰扮演特殊的角色,一同定义你的应用的全部行为

- 四种不同类型的组件,各自为不同目的设计,拥有不同的生命周期
1. 活动
  • 表示一个独立的UI屏幕
  • 相互独立
  • 可被其它应用调用
2. 服务
  • 运行于后台
  • 执行长时操作
  • 执行跨进程操作
  • 无UI
3. Content Providers
  • 管理共享的程序数据集合
  • 数据可以存储在文件系统、数据库、网络或者其它的持久化存储位置
  • 通过此组件,其它应用程序可以查询甚至修改数据
4. Broadcast Receivers
  • 响应系统范围内的广播
  • 系统广播
  • 应用程序广播
  • 无UI,但是可以创建状态栏通知
  • 通常,一个receiver本身只是一个关口,仅做少量工作,将处理转向相关组件,如建立一个服务来执行真正的处理工作。

- 安卓的独特指出:任何程序可以启动其它程序的组件
- 当系统启动一个组件,将调用它所在的应用程序对应的进程, 而非调用该组件的应用的进程
- 安卓应用不包含独立的入口点(main()等)
- 使用intent启动组建,而非直接调用

激活组件
- 活动、服务以及receivers由称为意图的异步消息来激活、
- 意图可指定组件,也可指定一类组件
- 用ContentResolver间接访问Content Provider(代理模式)

Manifest文件
- 系统从此文件获取组件信息
- 其它任务:
  • 标识需要的权限
  • 定义最小API级别
  • 声明需要软硬件特性,如摄像头,蓝牙或多点触摸屏
  • 应用需要链接的API库,如地图API
声明组件
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
   
<application android:icon="@drawable/app_icon.png" ... >
       
<activity android:name="com.example.project.ExampleActivity"
                 
android:label="@string/example_label" ... >
       
</activity>
        ...
   
</application>
</manifest>

声明组件能力
- <intent-filter>
- action, category, ...

声明应用程序需求
- 屏幕尺寸急密度: <supports-screens>
- 输入配置: <uses-configuration>
- 设备功能: <uses-feature>
- 平台版本: <uses-sdk>

应用程序资源


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值