安卓API指南之应用基础知识简介

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cysion1989/article/details/78411980

本系列的文章全部为学习摘要,不偏重各种细节展示,更多的是安卓体系重要节点的罗列,并适时加入少量自己的理解分析,以便能快速的回顾安卓体系结构和那些重要的技术点。

安卓apk文件安装到设备后,成为设备中的一个应用,每个应用都在其自己的 Linux 进程内运行,每个进程都具有自己的虚拟机 (VM),默认情况下,系统会为每个应用分配一个唯一的 Linux 用户 ID,因此应用代码是在与其他应用隔离的环境中运行。

默认情况下,每个应用都只能访问执行其工作所需的组件,而不能访问其他组件。不过,应用仍然可以通过一些途径与其他应用共享数据以及访问系统服务

  • 可以安排两个应用共享同一 Linux 用户 ID,具有相同用户 ID 的应用在同一 Linux 进程中运行,并共享同一 VM(应用还必须使用相同的证书签署)。

  • 应用可以请求访问设备数据(如相机、蓝牙等)的权限。 用户必须明确授予这些权限。

1、应用组件

  • Activity 表示具有用户界面的单一屏幕;

  • 服务是一种在后台运行的组件,用于执行长时间运行的操作或为远程进程执行作业;服务作为 Service 的子类实现;

  • 内容提供程序管理一组共享的应用数据。您可以将数据存储在文件系统、SQLite 数据库、网络上或您的应用可以访问的任何其他永久性存储位置。 其他应用可以通过内容提供程序查询或修改数据,,内容提供程序作为 ContentProvider 的子类实现;

  • 广播接收器是一种用于响应系统范围广播通知的组件。广播接收器不显示界面,但可以创建状态栏通知,在发生广播事件时提醒用户。广播接收器作为 BroadcastReceiver 的子类实现,并且每条广播都作为 Intent 对象进行传递;

2、启动组件

  • 您可以通过将 Intent 传递到 startActivity() 或 startActivityForResult()(当您想让 Activity 返回结果时)来启动 Activity(或为其安排新任务)。

  • 您可以通过将 Intent 传递到 startService() 来启动服务(或对执行中的服务下达新指令)。 或者,您也可以通过将 Intent 传递到 bindService() 来绑定到该服务。

  • 您可以通过将 Intent 传递到 sendBroadcast()、sendOrderedBroadcast() 或 sendStickyBroadcast() 等方法来发起广播;

  • 您可以通过在 ContentResolver 上调用 query() 来对内容提供程序执行查询。

3、声明组件

清单文件的主要任务是告知系统有关应用组件的信息,也会声明一些设备权限和应用所有权限等。声明一般包括:

  • Application的< application >元素

  • Activity 的 < activity > 元素

  • 服务的 < service > 元素

  • 广播接收器的 < receiver> 元素

  • 内容提供程序的 < provider > 元素

未在清单文件中声明的 Activity、服务和内容提供程序对系统不可见,因此也永远不会运行。 不过,广播接收器可以在清单文件中声明或在代码中动态创建(如 BroadcastReceiver 对象)并通过调用 registerReceiver() 在系统中注册。

4、声明组件功能

显示Intent主要是启动其它组件。隐式 Intent 的作用是描述要执行的操作类型,让系统能够在设备上找到可执行该操作的组件,并启动该组件。 如果有多个组件可以执行 Intent 所描述的操作,则由用户选择使用哪一个组件。

系统通过将接收到的 Intent 与设备上的其他应用的清单文件中提供的 Intent 过滤器进行比较来确定可以响应 Intent 的组件。由此相当于声明了这个组件的功能。

Service在api21时不再推荐使用隐式启动,会抛出异常;

BroadcastRecevier不支持直接启动,都是隐式启动,根据Intent.Action来区分。

5、应用资源

Android 应用并非只包含代码 — 它还需要与源代码分离的资源,如图像、音频文件以及任何与应用的视觉呈现有关的内容。

对于您的 Android 项目中包括的每一项资源,SDK 构建工具都会定义一个唯一的整型 ID,您可以利用它来引用应用代码或 XML 中定义的其他资源中的资源。

提供与源代码分离的资源的其中一个最重要优点在于,您可以提供针对不同设备配置的备用资源。

作者:刘咸尚

猜你喜欢

转载自blog.csdn.net/cysion1989/article/details/78411980
今日推荐