我有一个带有 imageView 和 textView 的 View (Activity)。 当我点击 imageView 然后在 textView 中显示我点击图像的次数。 我使用模式 MVP 来解决这个任务。
结果,一切正常。好的。不错。
但还有一项任务 - 在旋转屏幕后恢复 View 状态。
为了解决这个任务,我使用了下一个方法: 1.创建Presenter为单例 2.我Presenter我有变量
private int countClick;
在我调用
presenter.clickLike()
的 View 上单击 ImageView 时,增加它并调用 View 方法showCountOfClick()
在演示者中
public void clickLike() { 计数点击++; view.showCountOfClick(countClick + "");
在 Presenter 中我也有方法
@Override public void viewIsReady() { view.showCountOfClick(countClick + ""); }
此方法在 onCreate()
method() 中从 View 调用
在
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/