Question

I'm developing an Android application.

I have the following interface:

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

For each table defined on enum Table, it will be an object that represents that table.

My problem is about parameter Object item. I will have to unbox each item every time I call one of this methods and I don't know if this will be very slow for Android.

Do you know a better solution? I don't want to create a DBAdapter for each table because I should share SQLiteDatabase object between each other.

UPDATE:

Here is an example of object that I need to pass to those methods:

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

    public GameDescriptionData() {
    }
}

Thanks.

Was it helpful?

Solution

You haven't said what kind of values you're putting into the tables. Unless you're inserting primitive values, there won't be any boxing involved. For example, if item is a String reference, that doesn't need boxing because it's a reference already.

I suggest you try your ideal design before changing it for the sake of performance concerns. Admittedly I'm not entirely convinced this is a great design to start with, but it's hard to say without knowing more about your application.

OTHER TIPS

I would suggest the strategy pattern to impl the distinct care for each expected item.
Define DBAdapterStrategyFactory that will store all the strategies together based on their class type. This way, when calling operations on Object item you can pull that strategy from the factory and share most of the IDBAdapter code.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top