我无法理解 Android 软件设计中的一个重要方面,这是我刚开始接触的。据我所知,Fragment 设计已经被采用来解耦代码,其中的直觉是 Activity 保持不变,Fragment 可以在其他地方重复使用,甚至可以在不同的 Activity 中使用,或者与其他 Fragment 一起在像主/细节流或横向 UI 这样的东西中使用。
好吧,我看到了不少关于为什么将 Fragment 放置为静态内部类在 Activity 中的问题,答案是如果我们不将它们设置为静态的,那么 Fragment 可能会保存对 Activity 的引用,屏幕旋转或重新绘制等操作可能会泄漏 Activity 或其他内容。
这让我回到了原点,我的问题是,既然 Fragment 设计已经被采用来解耦代码,那么为什么要将 Fragment 嵌入到 Activity 类中并将它们放在 Activity 的内部,而不是将它们作为独立的公共类呢?这难道不完全背道而驰于 Fragment 的存在吗?
每个 Fragment 作为自己的单独类看起来更加整洁、解耦和可重用,尤其是当尝试做动画时,Fragment 代码可能会增长到 1000 行左右。
任何其他的项目设计方法、概念或纠正我的直觉都非常欢迎,因为我刚开始在这里工作,我很想知道所有的选项。谢谢 :)
好吧,我看到了不少关于为什么将 Fragment 放置为静态内部类在 Activity 中的问题,答案是如果我们不将它们设置为静态的,那么 Fragment 可能会保存对 Activity 的引用,屏幕旋转或重新绘制等操作可能会泄漏 Activity 或其他内容。
这让我回到了原点,我的问题是,既然 Fragment 设计已经被采用来解耦代码,那么为什么要将 Fragment 嵌入到 Activity 类中并将它们放在 Activity 的内部,而不是将它们作为独立的公共类呢?这难道不完全背道而驰于 Fragment 的存在吗?
每个 Fragment 作为自己的单独类看起来更加整洁、解耦和可重用,尤其是当尝试做动画时,Fragment 代码可能会增长到 1000 行左右。
- 我们是否仍然会受到上述内存泄漏问题的困扰?
- 我是否对设计逻辑有所遗漏?请指教。
- 是否有一种方法可以使 Fragment 保持为内部类并在其他地方使用?或许我也有所遗漏,请告诉我。
![项目结构](https://istack.dev59.com/ZEvmr.webp)