現在、私はAndroidアプリケーションを書いています。その主な機能は画面上でのフィンガーペインティングです。主な問題は、アプリケーションのデータ モデルを格納する方法です。ベストプラクティスは何ですか?現在、データ モデルは次のようになっています。
public class BoardModel {
public Bitmap mBoard;
public int mLineWidth = 1;
public int mForegroundColor = Color.GREEN;
public int mBackgroundColor = Color.BLACK;
}
このクラスは、メイン アクティビティの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に格納する必要がありますか? あまりにも多くのパーセル可能なオブジェクトを実装する必要があるようです。これほど保存コードを作成せずにモデルデータを保存する方法はありますか?