Android 对在应用程序中使用片段感到困惑吗
我有一个成熟的应用程序,它不是使用Android 对在应用程序中使用片段感到困惑吗,android,android-fragments,Android,Android Fragments,我有一个成熟的应用程序,它不是使用片段开发的。我的困惑是,我应该将其更改为具有片段,而不是活动。我想说的是,我在应用程序中只使用了纵向定位,它是构建的,只考虑手机,而不是平板电脑。所以我的问题是,如果我改变应用程序的整体结构并使用片段,会有什么好处吗 据我所知,只有当我们想重用某些东西时,才应该使用片段。任何建议都将不胜感激。如果您不打算在将来支持平板电脑,请保持原样。当你将你的应用程序转换成碎片时,你将一无所获 如果启动新的应用程序,情况就不同了。我会从一开始就使用片段,以便在将来需要支持其他
片段开发的。我的困惑是,我应该将其更改为具有片段
,而不是活动
。我想说的是,我在应用程序中只使用了纵向定位,它是构建的,只考虑手机,而不是平板电脑。所以我的问题是,如果我改变应用程序的整体结构并使用片段
,会有什么好处吗
据我所知,只有当我们想重用某些东西时,才应该使用片段。任何建议都将不胜感激。如果您不打算在将来支持平板电脑,请保持原样。当你将你的应用程序转换成碎片时,你将一无所获
如果启动新的应用程序,情况就不同了。我会从一开始就使用片段,以便在将来需要支持其他形式因素时更加灵活。请注意,支持库中提供了该功能,因此您也可以在较旧的设备上使用该功能。片段可用于创建动态和多窗格用户界面,因此非常适合于屏幕空间大得多的平板电脑。当然,在手机上,情况有点不同,你可以玩的空间要小得多,有时只需要将一个活动
安装到屏幕上,而不必担心包含多个片段
片段
非常适合动态界面,有助于平板电脑和手机之间的兼容性。它们之间的沟通能力也比活动要好得多,因此即使在仅使用手机的设置中使用它们也有一定的优势。(请参见碎片管理器
,了解它们可用于的一些功能)
下图展示了一个使用示例(摘自Android开发者网站)
这说明了片段的灵活性,它在平板电脑上可以占据相同的屏幕,在手机上切换到更像活动的格式。正是这种能力使得片段
比活动
具有这样的优势
因此,从灵活性的角度来看,切换到面向片段的解决方案显然有好处,但您最初的问题指出,您只针对手机,而且只针对纵向
拥有一个已经存在的带有活动的应用程序
,只要它是一个您满意的解决方案,并且具有良好的可用性,我想说,没有理由切换到片段
(除非您正在寻找挑战或有一些空闲时间,并且喜欢修补程序)。虽然存在优势,但剧烈的更改(如添加片段)可能会在应用程序中引入错误并影响用户体验(至少在短期内)
从长远来看,如果您曾考虑将平板电脑支持纳入考虑范围,或希望使用横向定位,那么最好开始研究如何使用片段来改善体验,并将其与手机应用程序的当前流程相结合
否则,您创建的当前解决方案就足够了,只要受到您客户群的欢迎,我看不出有任何理由进行更改
当然,对于将来的项目,或者是刷新当前项目的UI的时候,熟悉片段API并没有什么坏处
值得指出的是,片段
仅在Android 3.0(API级别11)中本机支持,要支持早期设备,您需要安装中的Android支持包。因此,如果您当前的应用程序针对的是2.x设备,为了简单性和.apk大小,我会坚持使用基于活动的方法,除非移动到本机API级别(如Android 3.0+)这是个人偏好,但最终您原始问题的答案将归结为您的个人偏好。就您的应用程序或任何应用程序而言,最好使用片段,它不会对您的应用程序造成任何伤害,也可以减轻您的负担,同时进一步扩展您的平板电脑应用程序。因此,最好从应用程序中使用片段开始。设置片段之间的交互比设置活动之间的交互更容易
如果是活动:
您需要在ActivityResult()上使用startActivityForResult()
/李>
您的自定义类型必须实现Parcelable
接口才能在活动之间传递李>
活动暂停/停止时,您必须释放所有资源
如果是碎片:
传递数据就像从FragmentManager
获取片段实例并调用方法一样简单李>
无需实施Parcelable
李>
您可以在包含所有片段的活动中保存对“重”资源的引用,并只初始化/释放它们一次(无需对每个片段进行初始化/释放)
另外,片段的实例
比活动的实例
更轻量级,初始化/恢复所需的时间和资源更少
一般来说,当您使用片段时,UI组件之间的交互更干净、更优雅、更易于实现。将片段视为将代码模块化为可管理片段的一种方式。每个片段代表一小部分功能和UI。这允许您轻松地调整代码以适应不同的场景
你真的不打算支持tabl吗