Domanda

Sto sviluppando un'applicazione Android.

Ho la seguente interfaccia:

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);
}

Per ogni tabella definita su enum Table, sarà un oggetto che rappresenta tale tabella.

Il mio problema è di circa parametro Object item. Dovrò unboxing ogni elemento ogni volta che io chiamo uno di questi metodi e non so se questo sarà molto lenta per Android.

Sai una soluzione migliore? Non voglio creare un DBAdapter per ogni tabella, perché avrei dovuto condividere oggetto SQLiteDatabase tra di loro.

UPDATE:

Ecco un esempio di oggetto che ho bisogno di passare a quei metodi:

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

    public GameDescriptionData() {
    }
}

Grazie.

È stato utile?

Soluzione

Non hai detto che tipo di valori si è messa nelle tabelle. A meno che non si sta inserendo valori primitivi, non ci sarà alcun boxe coinvolti. Ad esempio, se item è un riferimento String, che non ha bisogno di boxe perché è un punto di riferimento già.

Vi suggerisco di provare il vostro disegno ideale prima di cambiare per il bene di problemi di prestazioni. Devo ammettere che non sono del tutto convinto che questo sia un grande disegno per cominciare, ma è difficile da dire senza sapere di più sulla tua applicazione.

Altri suggerimenti

vorrei suggerire il modello di strategia per IMPL la cura distinta per ogni elemento previsto.
Definisci DBAdapterStrategyFactory che memorizzerà tutte le strategie insieme in base al loro tipo di classe. In questo modo, quando si chiama operazioni sulle Object item si può tirare questa strategia dalla fabbrica e condividere la maggior parte del codice di IDBAdapter.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top