Android中使用Intent的最佳实践

13

我是一个 Android 的新手,如果这个问题很蠢请原谅……

Intents 本质上是消息对象,可用于激活 3 种类型的组件:Activity、Service 或 Application。

尤其是对于 Activity,无论需要构建 intent 对象并使用内置的 Android 操作系统传递开销,是否始终优先使用 intents 来激活 Activity?

如果程序员知道要执行特定活动的唯一合法方式是某些更直接的方式,例如通过方法调用的直接调用,是否可以接受?

提前感谢。


4
我非常不同意人们将其投票下降,这就是为什么我又将其投票到了0。很明显,这个人只是好奇。把它看作“学术研究”。我经常使用Intents,但从未考虑过它。但好奇心是推动创新者的力量...即使只是想知道结果,而不是使用它(Intents显然是正确的方式),我也对此回答的结果感兴趣。跳出思维定式总是件好事,但并不意味着在思维定式之外做事情就一定是好事。也许如果这个人声望达到了200k,我们大家都会把它看作一个“研究问题”? - davidcesarino
2
完全同意。在我看来,这是一个非常合理的问题。特别是在所有其他“请帮我解决我的学校作业,这样我就不必自己寻找答案”的问题不断涌现的情况下。 - Fredrik Wallenius
1
我的意思完全一样,弗雷德里克...你也值得赞扬。我们都需要更多的思考者,而不是抄袭者。 - davidcesarino
2个回答

6
尽管构建意图对象并使用内置的Android操作系统传递它存在一些开销,但意图对象相当简单,是您考虑“开销”时应该最后担心的东西。
直接通过方法调用进行调用是行不通的。Android是一个框架,不仅仅是一堆类,这就像尝试使用Activity的构造函数一样。
但是,为什么您对意图有所反感?为什么您决定它们应该是“解决方法”,而不是Toast.makeText或其他什么?

1
你为什么觉得我对此有任何“反感”?我和另外两个同样新手的Android程序员正在讨论这个问题,其中一个人问了这个问题,我意识到我不知道答案,所以我自愿在这里发布这个问题。 - Peter Nelson
请记住,Android开发的主要Google网站说,StackOverflow是我们新手提问的地方,所以不要因为我们问一些初学者问题而生气! - Peter Nelson
嘿@Peter Nelson,冷静点,我不是“疯了”或其他什么东西,你说那是因为“against”这个词,我只是以普通问题的形式问你为什么你选择Intents作为一个“开销”,我希望你能给我一个基于答案的回复,这样我就可以编辑我的帖子并添加额外的信息。我使用“against”是因为它是“against”的 - 因为你问是否可以不使用它们,这意味着你对它们有所反感。 所以,我等待着你的评论,但我猜你只是生气了,哈哈 :) - apps
最终结论似乎是使用意图是正确的“最佳实践”(或者可能是唯一的方法)来激活这些组件。我会将这个帖子指向我的两个同事,让他们自己看看。我将标记问题为“已回答”。 - Peter Nelson
@PeterNelson 你的问题很好,我非常感谢你提问:这个系统似乎过于复杂了。我正在尝试使用startActivityForResult来获取返回结果。对于看起来只需要一个简单的方法/函数调用来实现y = f(x),在Android中我们必须使用意图(几行代码)来传递x,然后使用@Override public void onActivityResult(...)(多行代码)来接收y代码越多,调试就越多。(续) - JohnK
为什么Android的开发者们不能让这个过程更加简单明了呢?是什么让使用这个复杂框架成为了必要的,与Android活动有关吗? - JohnK

3
据我所知,如果我说错了,请有人纠正我,启动另一个Activity的唯一方法是使用Intent。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接