-1

我是 android 新手,目前正在阅读一本名为'Professional.Android.2.Application.Development'. 我已经看到了一些给我的代码来开始应用程序开发,我注意到大多数 java 代码都包含意图。

我想知道为什么我们使用意图而不是事件或服务。

关于意图,我所知道的只是它们是对要执行的操作的抽象描述。

我也想知道意图在android中的重要性。

谁能给我解释一下,因为我是新手,有点困惑。

4

1 回答 1

5

什么是意图?

Intent基本上是在组件(例如活动服务、广播接收器内容提供者)之间传递的消息。因此,它几乎等同于传递给 API 调用的参数。API 调用和意图调用组件的方式之间的根本区别是:

  • API 调用是同步的,而基于意图的调用是异步的。
  • API 调用是编译时绑定,而基于意图的调用是运行时绑定。

当然,通过使用所谓的显式意图,可以使意图完全像 API 调用一样工作,这将在后面解释。但通常情况下,隐式意图是要走的路,这就是这里解释的内容。

想要调用另一个组件的一个组件只需要表达它的意图来完成一项工作。并且任何其他存在并声称可以通过意图过滤器完成此类工作的组件都由 android 平台调用以完成该工作。这意味着,两个组件都不知道彼此的存在,并且仍然可以协同工作,为最终用户提供所需的结果。

组件之间的这种隐形连接是通过意图、意图过滤器和 android 平台的组合来实现的。

这导致了巨大的可能性,例如:

  • 在运行时混合和匹配或者更确切地说是即插即用的组件。
  • 用定制开发的应用程序替换内置的 android 应用程序。
  • 应用程序内部和跨应用程序的组件级重用。
  • 如果我可以说,面向最细粒度的服务。
  • 这是关于意图的附加描述,几乎是正式的。

意图是对要执行的操作的抽象描述。它可以与startActivity一起使用来启动一个Activity,broadcastIntent将其发送到任何感兴趣的BroadcastReceiver组件,以及startService(Intent)bindService(Intent, ServiceConnection, int)与后台服务通信。

Intent 提供了一种在不同应用程序中的代码之间执行后期运行时绑定的工具。它最重要的用途是在活动的启动中,它可以被认为是活动之间的粘合剂。它基本上是一种被动数据结构,包含对要执行的操作的抽象描述。意图中的主要信息是:

  • action 要执行的一般动作,如 ACTION_VIEW、ACTION_EDIT、ACTION_MAIN 等。
  • data 要操作的数据,例如联系人数据库中的人员记录,以 Uri 表示。

对这个数据结构是android实现的,你阅读下面的文档是很有帮助的:

于 2013-04-24T04:23:33.943 回答