java - Android 有一个演示者和 3 个 fragment

标签 java android mvp

这更多的是 Android 中 MVP 的概念性问题。我有 3 个 fragment ,我正在尝试为所有 3 个 fragment 使用 1 个演示者。

我对这些事情比较怀疑——

a) 在 fragment 的 onCreate() 中创建演示者的新实例,我这样做 -

presenter = new MyPresenter();
presenter.setView(this);

因此打开 3 个 fragment 将创建 3 个演示者实例。这是个好主意吗?

b) 第一个 fragment 的 View 必须在第二个和第三个 fragment 中被覆盖,尽管它们没有被使用并且它们只是空方法 使我的第二个和第三个 fragment 的代码长度变长。这是个好主意吗?

c) 虽然我在 fragment presenter.onDestroy()onDestory() 中做了,但是演示者会做 super.onDestory() . 我拥有的 BasePresenter 会像这样破坏 View -

public void onDestroy() {
    this.view = null;
}

虽然 View 被销毁了,但是presenetr垃圾被回收了吗?因为下一个 fragment 将创建演示者的新实例而我不想要多个实例 运行。

最佳答案

So 3 fragments opened will create 3 instances of presenter. Is it a good idea?

你应该这样做,每个 fragment 的每个演示者实例。但我建议您为特定的 fragment 创建特定的演示者。它清晰、易于改进和维护。

The view of 1 fragment must be overriden in 2nd and 3rd fragment although they are not used and they are just empty methods making my code length of 2nd and 3rd fragments long. IS this a good idea?

当然不,那是糟糕的代码。

Though the view is destroyed, is the presenetr garbage collected? Because next fragment will create new instance of presenter and I dont want several instances running.

它将被 GC 清除。您在每次 onCreate() 调用时都创建了新的演示者实例,因此这里有三个实例。它将是干净的,因为它只与特定的一个 fragment 相关联。

希望对您有所帮助!

关于java - Android 有一个演示者和 3 个 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48076077/

相关文章:

java - 我如何才能播放 .wav 声音?

java - Hibernate池似乎释放了连接

java - 三元运算符不是一个语句

android - FAB layout_anchor因存在资源而崩溃

android - NotificationCompat.Builder addAction 丢失了吗?

android - MVP 适配器数据缓存

java - 如何在文件中已存在的文本之后写入文件(光标移动到文件末尾)

android - 使用 LocationManager 检查权限的服务

architecture - 静态 View 模型/表示模型

android - 使用 mvp、dagger 2 和 RxJava 的无限滚动回收器 View 的模板代码