Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/04/2015, 03:29
Avatar de ipraetoriux
ipraetoriux
 
Fecha de Ingreso: abril-2010
Ubicación: ipraetoriux.com
Mensajes: 1.125
Antigüedad: 14 años
Puntos: 155
Respuesta: Concurrencia al acceder a una BD

Yo pregunto, que tiene que ver PHP en todo esto?...Android usa SQLite como base de datos y es gestionado desde Java. PHP lo usas en el servidor, no en la aplicación.

Por otro lado, logicamente, si abris y cerras todo el tiempo la conexion a base de datos el consumo de memoria se dispará y chau aplicación. Tenes que usar un singleton.

Lo que podes hacer es crear una clase que herede de SQLiteOpenHelper y agregar un metodo static synchronized para verifiicar si existe una instancia de la base de datos, si existe la retorna, si no instancia la clase.

Código Java:
Ver original
  1. public class DatabaseHelper extends SQLiteOpenHelper {
  2.  
  3.   private static DatabaseHelper sInstance;
  4.  
  5.   private static final String DATABASE_NAME = "database_name";
  6.   private static final String DATABASE_TABLE = "table_name";
  7.   private static final int DATABASE_VERSION = 1;
  8.  
  9.   public static synchronized DatabaseHelper getInstance(Context context) {
  10.  
  11.     // Use the application context, which will ensure that you
  12.     // don't accidentally leak an Activity's context.
  13.     // See this article for more information: http://bit.ly/6LRzfx
  14.     if (sInstance == null) {
  15.       sInstance = new DatabaseHelper(context.getApplicationContext());
  16.     }
  17.     return sInstance;
  18.   }
  19.  
  20.   /**
  21.    * Constructor should be private to prevent direct instantiation.
  22.    * make call to static method "getInstance()" instead.
  23.    */
  24.   private DatabaseHelper(Context context) {
  25.     super(context, DATABASE_NAME, null, DATABASE_VERSION);
  26.   }
  27. }

Luego en el activity, fragment o service, creas una variable de clase, haces referencia a la instancia de tu SQLiteOpenHelper. Finalmente en en onStop() verificas si existe la instancia, si es true, la cerras.