为什么不在活动中使用“newInstance”模式?

时间:2017-05-16 21:42:02

标签: android android-intent android-activity

这似乎是一种简化如何为片段设置参数的好方法,所以我很好奇为什么它不常用于创建用于启动活动的显式意图?

3 个答案:

答案 0 :(得分:2)

错误没有创建static方法来构建Intent来启动活动,甚至没有static方法来启动活动。您还可以使用IntentBuilder模式,在这种模式下,您可以展示生成Intent的构建器样式的API,以用于简单方法不可行的情况。例如,我在my CWAC-Cam2 library中采用了这种方法。

谷歌尚未宣传该模式,但如果您从Android Studio向导IIRC生成服务,您将看到此类代码。然而,谷歌并没有真正尝试展示所有可能的编程模式。

我所知道的最大限制是没有强制机制。虽然您可以提供这些类型的设施,但没有什么可以阻止开发人员绕过或忽略它们。 IOW,经典的create-an - Intent - and-go API是“公开的”,你不能以某种方式将它变成私有的。所以,你的活动需要承担最坏的情况,并拥有你觉得合适的防御性编程。

答案 1 :(得分:1)

我认为这只是因为你可以有很多片段,但你可能只有一些活动。

此外,您更有可能将args传递给片段,而不是通过活动传递。

答案 2 :(得分:0)

那是因为您可以使用new内的newinstance运算符创建片段,而活动不是这样,活动只能started使用代码中的意图。虽然创建是由OS处理的。您永远不会调用new来创建与片段不同的新活动。