在android中使用意图

Cat*_*ndu -1 android android-intent

我是android新手,现在正在读一本叫做的书'Professional.Android.2.Application.Development'.我已经看到了一些开始应用程序开发的代码,我注意到大多数java代码都是由意图组成的.

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

我所知道的意图是它们是要执行的操作的抽象描述.

我也想知道Android中意图的重要性.

任何人都可以向我解释,因为我是新的,有点困惑.

mr.*_*fox 5

什么是意图?

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

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

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

想要调用另一个组件的一个组件必须只表达其" 做一份工作的意图".并且任何其他组件存在并声称它可以通过intent-filters完成这样的工作,由android平台调用来完成这项工作.这意味着,两个组件都不知道彼此的存在,并且仍然可以一起工作以为最终用户提供期望的结果.

组件之间的这种不可见的连接是通过意图,意图过滤器和android平台的组合来实现的.

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

  • 在运行时混合和匹配或更确切地插入和播放组件.
  • 用自定义开发的应用程序替换内置的android应用程序.
  • 应用程序内部和之间的组件级重用.
  • 如果我可以说,服务方向到最细粒度的水平.
  • 这是关于意图的附加描述,几乎是正式的.

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

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

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

在这个数据结构上是android实现的,因为你阅读以下文档是非常有帮助的: