Android:MVP:恢复状态。将数据存储在演示器中以供查看是一个很好的解决方案吗?

标签 android mvp

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

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

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

为了解决这个任务,我使用了下一个方法: 1.创建Presenter为单例 2.我Presenter我有变量

private int countClick;
  1. 在我调用 presenter.clickLike() 的 View 上单击 ImageView 时,增加它并调用 View 方法

    showCountOfClick()

  2. 在演示者中

    public void clickLike() { 计数点击++; view.showCountOfClick(countClick + "");

  3. 在 Presenter 中我也有方法

    @Override
    public void viewIsReady() {
    view.showCountOfClick(countClick + "");
    }
    

此方法在 onCreate() method() 中从 View 调用

  1. TextView 的 View 中设置带有点击次数的文本。

    public void showCountOfClick(字符串文本){ textView.setText(文本)

完成。

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

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

最佳答案

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

  • 使用onSaveInstanceState,你可以将这个调用转发给你的Presenter处理
  • 使用 SharedPreferences 在 Presenter 中存储数据
  • 使用Architecture Components

关于Android:MVP:恢复状态。将数据存储在演示器中以供查看是一个很好的解决方案吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47673464/

相关文章:

android - 取消来自发起它的其他类的警报

java - Android findViewById 工具栏返回 null

android - 如何在没有 Content-desc、资源 ID 或文本属性的情况下查找元素 xpath

java - 用什么? MVC、MVP 或 MVVM 还是……?

android - 引用库最近 SDK/Eclipse 更新异常

android - 一次播放两个媒体播放器

c# - MVP 中的接口(interface)和类

java - 多个 Activity 实现相同的监听器

asp.net-mvc - 为什么微软为 ASP.NET 选择 MVC?

android - 如何使用 MVP 从 RecyclerView 插入/删除项目