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 />

应 用 解 析<br />

Activity :<br />

活 动 是 最 基 本 的 <strong>Android</strong> 应 用 程 序 组 件 , 应 用 程 序 中 , 一 个 活 动 通 常 就 是 一 个 单 独 的 屏 幕 。 每 一 个 活 动<br />

都 被 实 现 为 一 个 独 立 的 类 , 并 且 从 活 动 基 类 中 继 承 而 来 , 活 动 类 将 会 显 示 由 视 图 控 件 组 成 的 用 户 接 口 , 并 对<br />

事 件 做 出 响 应 。 大 多 数 的 应 用 是 由 多 个 屏 幕 显 示 组 成 。 例 如 : 一 个 文 本 信 息 的 应 用 也 许 有 一 个 显 示 发 送 消 息 的<br />

联 系 人 列 表 屏 幕 , 第 二 个 屏 幕 用 来 写 文 本 消 息 和 选 择 收 件 人 , 再 来 一 个 屏 幕 查 看 消 息 历 史 或 者 消 息 设 置 操 作<br />

等 。 这 里 每 一 个 这 样 的 屏 幕 就 是 一 个 活 动 , 很 容 易 实 现 从 一 个 屏 幕 到 一 个 新 的 屏 幕 并 且 完 成 新 的 活 动 。 在 某<br />

些 情 况 下 当 前 的 屏 幕 也 许 需 要 向 上 一 个 屏 幕 活 动 提 供 返 回 值 -- 比 如 让 用 户 从 手 机 中 挑 选 一 张 照 片 返 回 通 讯 录<br />

做 为 电 话 拨 入 者 的 头 像 。<br />

当 一 个 新 的 屏 幕 打 开 后 , 前 一 个 屏 幕 将 会 暂 停 , 并 保 存 在 历 史 堆 栈 中 。 用 户 可 以 返 回 到 历 史 堆 栈 中 的 前<br />

一 个 屏 幕 。 当 屏 幕 不 再 使 用 时 , 还 可 以 从 历 史 堆 栈 中 删 除 。 默 认 情 况 下 ,<strong>Android</strong> 将 会 保 留 从 主 屏 幕 到 每 一<br />

个 应 用 的 运 行 屏 幕 。<br />

简 单 理 解 Activity 代 表 一 个 用 户 所 能 看 到 的 屏 幕 ,Activity 主 要 是 处 理 一 个 应 用 的 整 体 性 工 作 , 例 如 , 监<br />

听 系 统 事 件 ( 按 键 事 件 、 触 摸 屏 事 件 等 )、 为 用 户 显 示 指 定 的 View, 启 动 其 他 Activity 等 。 所 有 应 用 的 Activity<br />

都 继 承 于 android.app.Activity 类 , 该 类 是 <strong>Android</strong> 提 供 的 基 层 类 , 其 他 的 Activity 继 承 该 父 类 后 , 通 过 Override<br />

父 类 的 方 法 来 实 现 各 种 功 能 , 这 种 设 计 在 其 他 领 域 也 较 为 常 见 。<br />

Intent :<br />

调 用 <strong>Android</strong> 专 有 类 Intent 进 行 架 构 屏 幕 之 间 的 切 换 。Intent 是 描 述 应 用 想 要 做 什 么 。Intent 数 据 结 构 两<br />

个 最 重 要 的 部 分 是 动 作 和 动 作 对 应 的 数 据 。 典 型 的 动 作 类 型 有 :MAIN( 活 动 的 门 户 )、VIEW、PICK、EDIT<br />

等 。 而 动 作 对 应 的 数 据 则 以 URI 的 形 式 进 行 表 示 。 例 如 : 要 查 看 某 个 人 的 联 系 方 式 , 你 需 要 创 建 一 个 动 作 类<br />

型 为 VIEW 的 Intent, 以 及 一 个 表 示 这 个 人 的 URI。<br />

<strong>Android</strong> 使 用 了 Intent 这 个 特 殊 类 , 实 现 在 屏 幕 与 屏 幕 之 间 移 动 。Intent 类 用 于 描 述 一 个 应 用 将 会 做 什 么<br />

事 。 在 Intent 的 描 述 结 构 中 , 有 两 个 最 重 要 的 部 分 : 动 作 和 动 作 对 应 的 数 据 。 典 型 的 动 作 类 型 有 :M AIN(activity<br />

的 门 户 )、VIEW、PICK、EDIT 等 。 而 动 作 对 应 的 数 据 则 以 URI 的 形 式 进 行 表 示 。 例 如 : 要 查 看 一 个 人 的 联<br />

系 方 式 , 你 需 要 创 建 一 个 动 作 类 型 为 VIEW 的 intent, 以 及 一 个 表 示 这 个 人 的 URI。<br />

与 之 有 关 系 的 一 个 类 叫 IntentFilter。 相 对 于 intent 是 一 个 有 效 的 做 某 事 的 请 求 , 一 个 intentfilter 则 用 于 描<br />

述 一 个 activity( 或 者 IntentReceiver) 能 够 操 作 哪 些 intent。 一 个 activity 如 果 要 显 示 一 个 人 的 联 系 方 式 时 , 需<br />

要 声 明 一 个 IntentFilter, 这 个 IntentFilter 要 知 道 怎 么 去 处 理 VIEW 动 作 和 表 示 一 个 人 的 URI。IntentFilter 需<br />

要 在 <strong>Android</strong>Manifest.xml 中 定 义 。<br />

通 过 解 析 各 种 intent, 从 一 个 屏 幕 导 航 到 另 一 个 屏 幕 是 很 简 单 的 。 当 向 前 导 航 时 ,activity 将 会 调 用<br />

startActivity(IntentmyIntent) 方 法 。 然 后 , 系 统 会 在 所 有 安 装 的 应 用 程 序 中 定 义 的 IntentFilter 中 查 找 , 找 到 最<br />

匹 配 myIntent 的 Intent 对 应 的 activity。 新 的 activity 接 收 到 myIntent 的 通 知 后 , 开 始 运 行 。 当 startActivity 方<br />

法 被 调 用 将 触 发 解 析 myIntent 的 动 作 , 这 个 机 制 提 供 了 两 个 关 键 好 处 :<br />

15

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

Saved successfully!

Ooh no, something went wrong!