正如Udacity所教导的那样,通常应该使用意图来开始一项新活动(可能会显示新的/不同的信息)。但是,对于我目前正在进行的项目,我一直在使用FragmentTransaction来显示应用程序的不同区域。我想这会导致一个较小的apk(b / c没有java / xml文件用于不同的活动),但有没有我没有考虑的好处(这表明我应该使用意图而不是FragmentTransactions)?
答案 0 :(得分:0)
在我看来,这取决于你所使用的是什么。 Intents和FragmentTransaction既有它们的好处,又在某些情况下更有用,而在其他情况下则更少。我认为这通常取决于你想用FragmentTransactions做什么。 Intents的一大好处是可以直接与其共享数据的Extra Bundles,在FragmentTransaction中数据之间的通信更加复杂。我认为你应该为自己尝试,而不是决定哪些在某些情况下有用。
答案 1 :(得分:0)
APK大小差异无关紧要。归档到APK时会压缩XML和类文件。无论如何,它们相对较小。
创建片段是为了提供一种在不同屏幕/设备外形之间共享屏幕UI组件的方法。
,例如,设想一个销售点应用程序,其中一个部分显示订单行项目,一个部分显示可以添加到订单的库存,一个部分显示订单的总美元金额。如果您的应用需要同时处理平板电脑和手机因素,则可以在平板电脑的屏幕上包含所有三个组件,但只包括手机上的订单项和总计。但是,您可以重复使用两种形状因子之间的行项目和总片段。您也可以重新使用库存片段,但组成方式不同:在平板电脑上,它与屏幕项目和总计一起组成,但在手机上它由一个单独的屏幕组成(嵌入在不同的活动中)。
无论如何,那是梦想。恕我直言,复杂生命周期(片段)的组件生活在具有复杂生命周期(活动)的另一个组件内的复杂性使这成为一个值得怀疑的前景。如果你让你的碎片完全独立而不知道保持活动或其他碎片,并保持活动不知道碎片的细节,它就可以工作。否则你会有很多“乐趣”。
具有讽刺意味的是,在屏幕上与其他片段组成的片段通常不是独立的。在上面的示例中,订单总计片段需要知道订单行项目。这意味着您需要为这两个片段创建服务,以便在不直接相互通信的情况下传达此信息。