【发布时间】:2013-05-24 20:42:29
【问题描述】:
目前我正在编写 android 应用程序,其主要功能只是在屏幕上进行手指绘画。主要问题是如何存储应用程序的数据模型。最佳做法是什么? 当前数据模型如下所示:
public class BoardModel {
public Bitmap mBoard;
public int mLineWidth = 1;
public int mForegroundColor = Color.GREEN;
public int mBackgroundColor = Color.BLACK;
}
这个类是在main Activity的onCreate方法被调用时实例化的。在它的生命周期中,活动可以被破坏。例如,当用户将设备方向从纵向更改为横向时,就会发生这种情况。因此,为了存储我的模型,我将像这样覆盖 onSaveInstanceState:
protected void onSaveInstanceState(Bundle outState) {
outState.putParcelable(KEY_MODEL, mModel);
}
并像这样修改了 onCreate 方法:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
if (savedInstanceState == null) {
mModel = new BoardModelParcelable();
} else {
mModel = savedInstanceState.getParcelable(KEY_MODEL);
}
}
我还添加了以下类来实现 Parcelable 接口
public class BoardModelParcelable extends BoardModel implements Parcelable{
....
}
问题是当我将任何数据添加到我的模型时,我必须修改 BoardModelParcelable 来存储它。例如,我打算添加描述仪器的类,用于绘制一些东西。在这种情况下,我需要为仪器创建另一个类,实现 Parcelable 接口?还是应该将仪器数据存储在 BoardModelParcelable 中?看起来我必须实现太多可打包的对象。任何想法如何存储我的模型数据而无需创建这么多的保存代码?
【问题讨论】:
标签: android mvp parcelable