为什么我们需要Intent来过渡到新的Activity / Service?

时间:2015-05-28 08:26:19

标签: android android-intent android-activity

在接受采访时我被问到以下问题:

为什么我们需要Intents来开始新的活动或服务?或者,为什么我们不通过创建新对象并调用activity_obj.onCreate(..)来启动Activity;在它上面。

我可以计算一些意图的好处,比如转移针对相应活动的数据和意图过滤器,但除了我无法得出令人满意的答案。

它与活动的生命周期回调处理有关吗?

2 个答案:

答案 0 :(得分:5)

Android启动活动的方式是通过Zygotes和大量的Java配置。如果我们要完成配置和启动活动的所有脏工作,我觉得这将是一个很大的热点。通过这种方式,我们可以进行“系统调用”,只需将其移交给Android,并要求它做一些事情。

从安全角度来看,这也意味着每个Activity都是由Android启动的。这意味着你无法启动Whatsapp,共享一些文本,并且因为你启动它而对它有完全的根控制权。这非常有用,如果需要通过在同一进程中进行通信,Android甚至可以为您提供与自己的活动进行交互的方法。这种沙盒方法是帮助平台安全的元素之一。

答案 1 :(得分:0)

主要原因是这为Android提供了一种完全自定义用户体验的简便方法。通过使用“隐式Intents”,您的应用程序可以告诉Android它应该找到能够对特定类型的数据执行某种类型的ACTION的组件(例如,“查看URL”或“打开PDF” -Document“或”COMPOSE a EMAIL“)。您的应用不需要知道要启动哪个组件来执行此操作。事实上,用户可能在他的设备上安装了几个可以执行所需操作的组件,因此这允许Android询问用户应该使用哪个组件来执行所需的操作。这使得为​​您设备上的几乎所有应用程序提供直接替换非常容易。

当然还有其他25种方法可以实现这一目标。原始开发人员选择了Intent机制。