关于你应该使用 Activity
还是 Fragments
有很多讨论。
例如:
- To-Fragment-or-not-to-Fragment
- One Activity and all other Fragments
- How many Activities vs. Fragments
- Use Activity or Fragment in Android Application
我发现的大部分讨论都是在 Android 4.2 之前发布的。
借助 Android 4.2,Google 发明了 nested Fragments .
因此,我实际上没有理由再使用多个 Activity
。
在 Fragments
的早期阶段,它们应该在应用程序中用于同时以舒适的方式支持 平板电脑 和 智能手机时间。
因此,例如,您有一个 ListView
可以在单击项目时打开详细信息 View
。在智能手机上,我们将替换 ListView
并显示详细的 View
。而 Tablet 可以同时显示两个 Views
,而不是用详细 View 替换 List。
现在嵌套 Fragments
有很多其他的可能性。如果您想使用单个 Activity
,您可以将一般信息存储在 Activity
中,并且每个 Fragment
都可以访问它。
除此之外,嵌套了 Fragments
的 Fragments
还可以为其子 Fragments
存储信息。
使用Fragments
,我可以轻松地重用Views
,我可以同时显示多个Fragment
,我可以轻松地组成一个Fragment
中的对话框。这一切可能只需要我进行一些复制和粘贴操作。
如果我使用 Activities
代替,我必须进行大量更改才能完成这项工作。
我最近实现了一个应用程序,我可以轻松地使用两个 Fragment-ViewPager
来获得非常漂亮和动态的东西(某种:今天的信息 - 昨天的信息)。
在我看来,Fragments
让我们的生活更轻松 :)
问题:
- 为什么要使用多个
Activity
?
您能否提供一个很好的例子,说明使用多个 Activity
比使用 Fragments
更有意义?
- 有没有什么好的例子让你别无选择,只能使用
Activity
?
我认为大多数较大的框架,如 Maps、YouTube 等已经支持 Fragments
。所以我们不必依赖Activity
。
如果您使用 fragment
。
来自 Udacity:
为什么不总是创建一个包含大量 Fragment 的 Activity?
- 增加了复杂性
- 更难的 Intent 处理
- 难以阅读、维护和测试
- 紧耦合的风险
- 安全问题
最佳答案
首先,我同意你的观点,即可以只使用一个 Activity 和嵌套 fragment 来编写一个巨大的应用程序。这就是软件的乐趣——您可以使用多种方法实现相同的功能。对我来说,使用多个 Activity 的选择取决于我个人对封装性、可重用性和可测试性的偏好。
如果我有一个可以在其他应用程序中重复使用的小部件,我会将其设为 fragment 。例如,我的应用程序具有“与服务器同步”按钮,并且我创建了一个自定义 fragment ,它使用进度条直观地显示同步过程。很容易想象另一个应用程序能够使用这个小部件,所以这就是我将它开发为 fragment 的原因。
如果我在我的应用程序中切换任务,以使新任务在概念上独立于前一个任务,那么我将使用一个新 Activity 。例如,我的应用程序的第一页要求您选择一个用户。一旦您单击了某个用户,我会将您转到该用户的主菜单。用户的这个主菜单显示在一个新的 Activity 中。
现在让我们想象一个大型复杂的应用程序,以及一个负责开发该应用程序的开发人员团队。如果应用程序可以划分为单独的 Activity ,那么在概念上划分任务非常容易。每个 Activity 都是自己的沙箱,因此并行开发简单且可进行单元测试。当然,如果有任何共同需求,团队仍然应该开发 Fragments 并重用它们。我应该补充一点,代码重用在软件开发中并不经常发生,但如果做得好,应该有很多可重用的 fragment 。
现在假设是时候测试应用了。您的测试团队可以将每个 Activity 视为自己的黑匣子。这比依赖于单个 Activity 和大量嵌套 fragment 的单个大型应用程序更容易测试。如果存在错误,这一点尤其重要。如果存在不明显的错误,至少我知道错误的范围仅限于许多 Activity 中的单个 Activity 。
总而言之,我的猜测是您是作为个人开发您的应用程序,因此您的开发决策不会影响其他任何人。如果您正在与更大的团队一起开发应用程序,您的观点可能会发生变化,我希望我的回答在这方面很有意义。
关于android - To Fragment or not to Fragment - 针对 Activity 的嵌套 fragment 。为什么我应该使用多个 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19927452/