Android:MVP:恢复状态。在演示者中存储视图数据是一个很好的解决方案吗?

时间:2017-12-06 11:42:56

标签: android mvp

我有一个带有imageView和textView的视图(Activity)。 当我点击imageView然后在textView中显示我点击图像的时间。 我使用模式MVP来解决这个任务。

结果,一切正常。好。好的。

但还有一项任务 - 在旋转屏幕后恢复视图状态。

要解决此任务,我使用下一种方法: 1.将Presenter创建为Singleton 2.我演示者我有变量

private int countClick;
  1. 在我调用presenter.clickLike()的视图上单击ImageView时,将其递增并调用View方法

    showCountOfClick()

  2. 在演示者

    public void clickLike(){     则countclick ++;     view.showCountOfClick(countClick +""); }

  3. 同样在Presenter中我有方法

    @Override
    public void viewIsReady() {
    view.showCountOfClick(countClick + "");
    }
    
  4. 此方法从onCreate()方法()

    中的View调用
    1. TextView的查看设置文字中,点击次数。

      public void showCountOfClick(String text){   textView.setText(文本) }

    2. 完成。

      因此,当旋转屏幕时,点击次数显示正确。 并且我在View中不需要覆盖方法protected void onSaveInstanceState(Bundle outState),因为所有工作都在Presenter中完成。

      问题: 这是一个很好的解决方案吗?

1 个答案:

答案 0 :(得分:-1)

您的Activity(通常)将在系统配置更改时被销毁并重新创建。因此,在单例中对它进行引用并不是一个好主意。在这种情况下我有多种解决方案:

  • 使用onSaveInstanceState,您可以将此调用转发给Presenter进行处理
  • 使用SharedPreferences在Presenter中存储数据
  • 使用Architecture Components