La lista que estaba insertando en la tabla contenía 900 sitios, que debían ser insertados en la base de datos, para después ser ubicados en el mapa. y el tiempo que tomaba era de 16 segundos. Este era mi código inicial:
public void createSites(List<Site> objs) { for (Site obj : objs) { ContentValues values = obj.getContentValues(); long insertId = db.insertWithOnConflict(database.TABLE_TYPEPENDING,null,values,SQLiteDatabase.CONFLICT_REPLACE); } }
Después de añadir transacciones explícitas en SQLite, el tiempo paso a menos de un segundo, y la información estaba disponible mucho más rápido.
public void createSites(Listobjs) { try { //Inicio la transacción db.beginTransaction(); for (Site obj : objs) { ContentValues values = obj.getContentValues(); db.insertWithOnConflict(database.TABLE_TYPEPENDING, null, values, SQLiteDatabase.CONFLICT_REPLACE); } //Marca la transacción actual como exitosa db.setTransactionSuccessful(); }catch (SQLException e) { Log.e(toString(),"Sql error"); } finally { //Termina la transacción db.endTransaction(); } }