0

私はAndroidアプリケーションを開発しています。

私は次のインターフェースを持っています:

public interface IDBAdapter {

    public enum Table {
        ...
    }
    public int insertItem(Table table, Object item);
    public boolean removeItem(Table table, long rowIndex);
    public Cursor getAllItemsCursor(Table table);
    public Cursor setCursorToItem(Table table, long rowIndex);
    public void getItem(Table table, long rowIndex);
    public boolean updateItem(Table table, long rowIndex, Object item);
}

で定義されたテーブルごとにenum Table、そのテーブルを表すオブジェクトになります。

私の問題は parameter についてObject itemです。このメソッドのいずれかを呼び出すたびに、各アイテムをアンボックスする必要がありますが、これが Android で非常に遅くなるかどうかはわかりません。

より良い解決策を知っていますか?SQLiteDatabase オブジェクトを相互に共有する必要があるため、テーブルごとに DBAdapter を作成したくありません。

アップデート:

これらのメソッドに渡す必要があるオブジェクトの例を次に示します。

public class GameDescriptionData {
    public int gameId;
    public char[] language = new char[5];
    public String name;
    public String description;

    public GameDescriptionData() {
    }
}

ありがとう。

4

2 に答える 2

3

テーブルにどのような値を入れているかは述べていません。プリミティブ値を挿入しない限り、ボクシングは必要ありません。たとえば、itemString参照である場合、それは既に参照であるため、ボックス化は必要ありません。

パフォーマンス上の懸念から変更する前に、理想的なデザインを試してみることをお勧めします。確かに、これが最初から優れた設計であると完全に確信しているわけではありませんが、アプリケーションについて詳しく知らなければ、何とも言えません。

于 2010-10-17T07:55:34.720 に答える
1

予想される各アイテムに個別のケアを実装するための戦略パターンを提案します。クラスタイプに基づいてすべての戦略を一緒に保存するように
定義します。DBAdapterStrategyFactoryこのようにして、操作を呼び出すときにObject item、ファクトリからその戦略を引き出して、ほとんどのIDBAdapterコードを共有できます。

于 2010-10-17T07:55:56.957 に答える