27.02.2014 Views

Android 开发教程

Android 开发教程

Android 开发教程

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

-----------------------------------<strong>Android</strong> 编 程 基 础<br />

A、Activities 能 够 重 复 利 用 从 其 它 组 件 中 以 Intent 的 形 式 产 生 的 一 个 请 求 ;<br />

B、Activities 可 以 在 任 何 时 候 被 一 个 具 有 相 同 IntentFilter 的 新 的 Activity 取 代 。<br />

IntentReceiver:<br />

当 你 希 望 你 的 应 用 能 够 对 一 个 外 部 的 事 件 ( 如 当 电 话 呼 入 时 , 或 者 数 据 网 络 可 用 时 , 或 者 到 了 晚 上 时 ) 做 出 响<br />

应 , 你 可 以 使 用 一 个 IntentReceiver。 虽 然 IntentReceiver 在 感 兴 趣 的 事 件 发 生 时 , 会 使 用 NotificationManager<br />

通 知 用 户 , 但 它 并 不 能 生 成 一 个 UI。IntentReceiver 在 <strong>Android</strong>Manifest.xml 中 注 册 , 但 也 可 以 在 代 码 中 使 用<br />

Context.registerReceiver() 进 行 注 册 。 当 一 个 intentreceiver 被 触 发 时 , 你 的 应 用 不 必 对 请 求 调 用 intentreceiver,<br />

系 统 会 在 需 要 的 时 候 启 动 你 的 应 用 。 各 种 应 用 还 可 以 通 过 使 用 Context.broadcastIntent() 将 它 们 自 己 的<br />

intentreceiver 广 播 给 其 它 应 用 程 序 。<br />

Service :<br />

一 个 Service 是 一 段 长 生 命 周 期 的 , 没 有 用 户 界 面 的 程 序 。 比 较 好 的 一 个 例 子 就 是 一 个 正 在 从 播 放 列 表 中<br />

播 放 歌 曲 的 媒 体 播 放 器 。 在 一 个 媒 体 播 放 器 的 应 用 中 , 应 该 会 有 多 个 activity, 让 使 用 者 可 以 选 择 歌 曲 并 播 放<br />

歌 曲 。 然 而 , 音 乐 重 放 这 个 功 能 并 没 有 对 应 的 activity, 因 为 使 用 者 当 然 会 认 为 在 导 航 到 其 它 屏 幕 时 音 乐 应 该<br />

还 在 播 放 的 。 在 这 个 例 子 中 , 媒 体 播 放 器 这 个 activity 会 使 用 Context.startService() 来 启 动 一 个 service, 从 而<br />

可 以 在 后 台 保 持 音 乐 的 播 放 。 同 时 , 系 统 也 将 保 持 这 个 service 一 直 执 行 , 直 到 这 个 service 运 行 结 束 。 另 外 ,<br />

我 们 还 可 以 通 过 使 用 Context.bindService() 方 法 , 连 接 到 一 个 service 上 ( 如 果 这 个 service 还 没 有 运 行 将 启 动<br />

它 )。 当 连 接 到 一 个 service 之 后 , 我 们 还 可 以 service 提 供 的 接 口 与 它 进 行 通 讯 。 拿 媒 体 播 放 器 这 个 例 子 来 说 ,<br />

我 们 还 可 以 进 行 暂 停 、 重 播 等 操 作 。<br />

Content Provider :<br />

<strong>Android</strong> 应 用 程 序 能 够 将 它 们 的 数 据 保 存 到 文 件 、SQLite 数 据 库 中 , 甚 至 是 任 何 有 效 的 设 备 中 。 当 你 想<br />

将 你 的 应 用 数 据 与 其 它 的 应 用 共 享 时 , 内 容 提 供 器 就 可 以 发 挥 作 用 了 。 因 为 内 容 提 供 器 类 实 现 了 一 组 标 准 的<br />

方 法 , 从 而 能 够 让 其 它 的 应 用 保 存 或 读 取 此 内 容 提 供 器 处 理 的 各 种 数 据 类 型 。<br />

数 据 是 应 用 的 核 心 。 在 <strong>Android</strong> 中 , 默 认 使 用 鼎 鼎 大 名 的 SQLite 作 为 系 统 DB。 但 是 在 <strong>Android</strong> 中 , 使 用 方<br />

法 有 点 小 小 的 不 一 样 。 在 <strong>Android</strong> 中 每 一 个 应 用 都 运 行 在 各 自 的 进 程 中 , 当 你 的 应 用 需 要 访 问 其 他 应 用 的 数<br />

据 时 , 也 就 需 要 数 据 在 不 同 的 虚 拟 机 之 间 传 递 , 这 样 的 情 况 操 作 起 来 可 能 有 些 困 难 ( 正 常 情 况 下 , 你 不 能 读 取<br />

其 他 的 应 用 的 db 文 件 ),ContentProvider 正 是 用 来 解 决 在 不 同 的 应 用 包 之 间 共 享 数 据 的 工 具 。<br />

• 所 有 被 一 个 <strong>Android</strong> 应 用 程 序 创 建 的 偏 好 设 置 , 文 件 和 数 据 库 都 是 私 有 的 。<br />

• 为 了 和 其 他 应 用 程 序 共 享 数 据 , 应 用 程 序 不 得 不 创 建 一 个 Content Provider<br />

• 要 回 索 其 他 应 用 程 序 的 数 据 , 它 自 己 的 Content Provider 必 须 被 调 用<br />

• <strong>Android</strong> 本 地 Content Provider 包 括 :<br />

‣ CallLog: 地 址 和 接 收 到 的 电 话 信 息<br />

‣ Contact.People.Phones: 存 储 电 话 号 码<br />

‣ Setting.System: 系 统 设 置 和 偏 好 设 置<br />

‣ 等 等<br />

16

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!