• 日常搜索
  • 百度一下
  • Google
  • 在线工具
  • 搜转载

Android SDK:常见的 Android 组件

在本系列中,我们将学习开始构建应用程序所需了解的 android 开发基本功能。到目前为止,我们已经了解了 Android 应用程序中的结构和典型元素,包括用户界面元素和数据存储。您可以使用我们已经介绍的内容开始创建您自己的应用程序。但在您开始之前,我们将在本教程中运行一些常见的 Android 组件,然后在下一个教程中快速查看 SDK 示例。

Android SDK:常见的 组件  第1张

介绍

有四个主要的 Android 应用程序组件:activities、services、content providers和broadcast receivers。无论何时创建或使用其中任何一个,都必须在项目清单中包含元素。在本文中,我将简要介绍所有这些组件,包括有关它们在应用程序中的作用等信息。我还会提到您的应用程序最有可能使用的一些资源,包括fragments和action bar.

一、活动

活动是 Android 应用程序的重要组成部分,因为它们为用户提供了一个与您的应用程序交互的界面。一个活动基本上代表您应用程序的一个屏幕。如果我们以联系人应用为例,那么显示所有联系人列表的屏幕是一个活动,而当我们点击联系人以查看更多详细信息时出现的屏幕是另一个活动。

活动的惊人之处在于,即使一个应用程序可以包含多个活动,例如我们示例中的联系人应用程序,但所有这些活动都是独立的。这意味着应用程序的不同活动也可以由安装在设备上的其他应用程序启动。例如,如果有人在 WhatsApp 等消息应用程序上向您发送联系人,那么如果联系人应用程序允许此类行为,WhatsApp 将能够启动联系人应用程序的活动以保存联系人。这使得 WhatsApp 无需编写任何实现代码即可无缝集成该功能。

Activity在创建我们自己的 Android 应用程序时,活动作为类的子类实现。

二、服务

Android中的Aservice是后台进程。Services通常用于正在进行的或需要大量时间的过程。Aservice没有用户界面,因此它通常与其他组件结合使用,例如activities. 一个典型的例子是一个应用程序,其中一个活动启动一个在用户交互时运行的服务,该服务可能将数据上传到网络资源。用户可以在服务运行时继续与活动交互,因为它在后台执行。

如果你想进行后台处理,比如获取互联网数据,你不一定需要实现一个服务类。java.util.concurrent根据您的应用程序的需要,在您的活动中使用包或kotlin 协程可能更合适。

早些时候,这是使用AsyncTask该类完成的,但由于缺少回调和屏幕方向等配置更改时发生的崩溃等问题,该类已被弃用。

要将service组件添加到清单,请使用以下语法将元素放置在application元素内:

1个
<service android:name=".ServiceClassName" />

服务元素可以包含intent-filter元素和meta-data元素本身。您可以将许多其他属性添加到服务元素中。请记住,您在应用程序中实现的任何服务也必须存在于清单文件中。否则,该服务将对系统不可见,永远不会运行。

您应该了解三种服务:

  1. 前台服务在运行时必须显示通知。这些服务用于执行用户注意到的任务,例如播放音频或保存已编辑的视频。

  2. 后台服务会做一些用户不会注意到的事情,例如存储优化。请记住,Android对后台服务设置了一些限制以优化性能。

  3. 绑定服务是应用程序组件通过调用bindService()方法绑定到服务的地方。绑定服务提供了一个接口,允许它们与应用程序组件进行交互,并且这些服务只有在绑定到应用程序组件时才会运行。

您可以使用与活动相同的流程在 Android Studio 中创建服务类,选择service超类。服务在许多重要方面都不同于我们之前看到的活动组件。如果您启动一个从 Activity 运行的服务,并且用户从该 Activity 导航到另一个应用程序,该服务将继续运行。因此,服务的生命周期与我们探索的活动生命周期不同。您需要牢记这一点,以确保您的应用高效。

其他一些应用程序可以绑定到服务,从它们请求和接收数据。如果绑定服务正在运行,它会在绑定到它的所有组件停止时停止。虽然服务与应用程序用户界面是分开的,但在活动中启动的服务将在与活动相同的线程中运行。但是,如果您的服务要使用大量处理资源,您可以创建一个单独的线程来运行它。有关服务的更多信息,请参阅Android 开发人员指南。

三、内容提供者

内容提供者是用于管理数据集的组件。该数据集可以是您的应用程序私有的,也可以与其他能够查询和修改数据的应用程序共享。如果您创建一个内容提供程序来管理您自己的应用程序的数据,您的 UI 组件(例如活动)将使用内容提供程序(通常通过内容解析器类)与数据交互。当被其他应用程序使用时,内容提供者通过标准方法管理对数据的访问,以与结构化数据集(如数据库)进行交互。

如果您完全熟悉关系数据库,您会直观地理解用于通过内容提供程序访问数据的方法。内容提供者在一组包含行和列的表中显示数据,行(或记录)中的每一列都包含一个数据值。因此,处理通过内容提供者返回的数据类似于处理数据库查询结果。

虽然您当然可以在某个时候创建内容提供程序应用程序,但在您的初始应用程序中,您更有可能访问由其他开发人员或 Android 系统本身创建的应用程序,例如设备日历或联系人。内容提供者可以定义客户端应用程序使用它们所需的权限。要在您的应用中使用内容提供者,您需要在您的清单中为其添加相关权限。

如果您只需要在您的应用程序中使用结构化数据源,您通常不需要创建内容提供程序。您可以创建一个对您的应用程序私有的 sqlite 数据库,而根本不需要使用内容提供程序类。您需要创建内容提供程序的唯一情况是您希望其他应用程序访问您的结构化数据,您希望将结构化数据从您的应用程序复制到其他应用程序,或者您希望使用搜索框架。

Android 中的搜索框架是指操作系统为您提供的所有工具,可帮助您在网站中实现搜索功能。除了在您的应用程序中实现自定义搜索建议之外,您还需要内容提供程序来将您的应用程序数据公开给不同的小部件,并在应用程序之间传输复杂的数据。

Android 也有自己的一组内置内容提供程序,几乎每个已安装的 Android 应用程序都可以访问这些内容提供程序。这些内置内容提供程序允许轻松访问设备上的联系人、日历和媒体文件等数据。

有关详细信息,请参阅Android 开发人员指南中的内容提供程序部分。

四、广播接收器

Android 系统使应用可以响应各种类型的广播。您也可以开发应用程序来进行这些广播,但这比收听现有广播的可能性要小得多,至少对于您的第一个应用程序而言是这样。系统公告包括有关设备硬件的信息,例如电池电量、屏幕关闭、充电器插入插座等。

要在 Android 上接收广播通知,您的应用程序可以使用broadcast receiver. 一个典型的例子是电池电量小部件,您希望在电池电量变化时更新显示。在这种情况下,您可以将service类与广播接收器结合使用,让您的应用程序继续在后台收听通知。

Android 系统将广播公告建模为intents,可用于启动activity. 意图是系统执行的操作,例如启动活动或发布公告。要使用广播接收器,您的应用必须在清单中声明它,以及一个可选的intent filter,指示您想要接收的操作:

<receiver android:name=".YourReceiver">
<intent-filter>
<action android:name="android.intent.action.BATTERY_LOW" />
</intent-filter>
</receiver>

这适用于您的应用程序可以接收电池电量不足意图的广播接收器。

应用程序接收广播有两种方式。第一个是我们刚刚在上面讨论过的清单声明的接收者。在这种情况下,广播接收器充当您应用程序的入口点。基本上,如果应用程序尚未运行,系统将能够启动应用程序,然后传送广播。

请注意,您无法通过以这种方式在清单中声明它们的操作来接收所有系统公告。在某些情况下,您需要注册才能在 Java 或 Kotlin 中接收它们。一个这样的例子是BATTERY_CHANGED动作。它需要使用该Context.registerReceiver()方法进行显式注册。您还需要正确注册和取消注册任何此类广播接收器,以防止任何上下文泄漏或多次注册。有关此类应用程序的更多信息,请参阅广播接收器类。

广播接收器是作为BroadcastReceiverAndroid 应用程序中类的子类实现的。Intent然后使用该sendBroadcast()方法将这些广播作为对象传送。

五、其他类

正如我们所见,Android 组件旨在提供应用程序之间的交互。正如广播公告可用于系统上的任何应用程序一样,Android 提供了某些可用于在应用程序中执行常见任务的操作,例如拨号。同样,您可以经常使用其他开发人员提供的功能来执行处理,从而节省您必须自己实现的代码量,并让您专注于应用程序的独特方面。当您从另一个 Intent 启动一个 Intent 时,您可以将其设置为将结果返回到启动 Activity,即使启动的 Intent 不是您的应用程序的一部分。这可以让您的应用在请求的操作完成后继续运行。

您应该了解的其他 Android 组件包括fragments和action bar. 让我简要介绍一下它们。

碎片

与其简单地使用活动和布局来为每个应用程序屏幕定义整个用户界面,不如使用fragments. 使用片段,您可以将用户界面的各个部分划分为逻辑部分,甚至可以在应用程序的多个屏幕上重复使用这些部分。这使您免于多次实施相同的视觉/交互元素的任务,并且它为您提供了这些部分的单一更改点。片段被建模为活动的一部分,因此片段与其所在活动的生命周期相关联。有关更多信息,请参阅开发人员指南的片段部分。

操作栏

操作栏,也称为应用栏,是您可能会发现有用的另一个关键用户界面元素。操作栏为您的应用程序提供了一个在整个 Android 系统中保持一致的用户界面组件,这使其成为平台用户的直观元素。操作栏中显示的典型项目包括用户在您的应用程序中的位置指示器(如果适用)和常见操作的快捷方式,包括应用程序各部分之间的导航。

要在活动中使用操作栏,请确保您的类扩展了AppCompatActivity该类,并将AppCompat主题应用于清单中的活动。有关操作栏的更多信息,请参阅开发人员指南。

结论

您使用哪些 Android 类和组件自然取决于您的应用程序的功能。但是,以上组件概述了您可以选择哪些类和组件。通常很难决定将哪个组件或类用于特定特性或功能,因此请确保在做出决定之前了解每个组件或类的用途。在接下来的几个教程中,我们将了解 Android 示例和应用程序发布过程。


文章目录
  • 介绍
  • 一、活动
  • 二、服务
  • 三、内容提供者
  • 四、广播接收器
  • 五、其他类
    • 碎片
    • 操作栏
  • 结论
  • 发表评论