Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


BeginTransaction (), endTransaction () y setTransactionSuccessful (). ¿Qué hacen exactamente?

Tengo que proporcionar sincronización al insertar, consultar, actualizar y eliminar elementos de una base de datos. Por lo que entiendo beginTransaction() y beginTransactionNonExclusive() son los métodos que necesito.

Además la documentación de SQLite describe EXCLUSIVE , IMMEDIATE y DEFERRED bastante bien.

  • ¿Qué archivo de configuración prefiere leer / escribir en PreferenceFragment?
  • Cómo reiniciar el servicio en android para llamar al servicio de nuevo
  • ¿Cómo puedo acceder a la UI de la actividad de mi clase?
  • El proveedor de ubicación fusionado no parece utilizar el receptor GPS
  • Actividad acelerada de HW - ¿Cómo obtener el límite de tamaño de textura de OpenGL?
  • Android: poner GPSTimeStamp en jpg etiquetas EXIF
  • Las transacciones pueden ser diferidas, inmediatas o exclusivas. Diferido significa que no se obtienen bloqueos en la base de datos hasta que se accede por primera vez a la base de datos.

    Si la transacción es inmediata, los bloqueos RESERVED se obtienen en todas las bases de datos tan pronto como se ejecute el comando BEGIN, sin esperar a que se utilice la base de datos. Después de BEGIN IMMEDIATE, ninguna otra conexión de base de datos podrá escribir en la base de datos o realizar BEGIN IMMEDIATE o BEGIN EXCLUSIVE. Sin embargo, otros procesos pueden seguir leyendo desde la base de datos.

    Una transacción exclusiva hace que los bloqueos EXCLUSIVE sean adquiridos en todas las bases de datos. Después de BEGIN EXCLUSIVE, ninguna otra conexión de base de datos excepto las conexiones read_uncommitted podrá leer la base de datos y ninguna otra conexión sin excepción podrá escribir la base de datos hasta que la transacción esté completa.

    Parece proporcionar cierta protección contra inserciones no deseadas y consultas mientras que algún hilo está trabajando con la base de datos. Pero no estoy seguro de que garantice la sincronización.

    Existe el método insert de mi ContentProvider .

     @Override public Uri insert(Uri baseUri, ContentValues values) { try { mDatabase = mHelper.getWritableDatabase(); mDatabase.beginTransaction(); // EXCLUSIVE switch (sUriMatcher.match(baseUri)) { case UriCodes.COUNTRIES: case UriCodes.CONTINENTS: case UriCodes.ORGS: String table = baseUri.getLastPathSegment(); long rowId = mDatabase.insert(table, null, values); Uri uri = Uri.withAppendedPath(baseUri, Long.toString(rowId)); mDatabase.setTransactionSuccessful(); return uri; default: mDatabase.endTransaction(); throw new IllegalArgumentException(UNSUPPORTED_URI + SPACE + baseUri); } } finally { mDatabase.endTransaction(); } } 

    No he tenido ningún problema sin beginTransaction() , endTransaction() y setTransactionSuccessful() antes. ¿Realmente necesito agregarlos?

  • Inicialización estática en OpenCV Android
  • Cuando se llama onRestoreInstanceState?
  • Animar dos elementos desplegables en capas Pre-Honeycomb
  • Deshacerse de la línea bajo TabWidget
  • Obtener Aplicaciones Directorio de empresas
  • ¿Cómo obtener la Scrollposition en Recyclerview / Layoutmanager?
  • 2 Solutions collect form web for “BeginTransaction (), endTransaction () y setTransactionSuccessful (). ¿Qué hacen exactamente?”

    ¡Por supuesto con Android! Si está trabajando para una manipulación fiable de datos, es importante utilizar los siguientes métodos soportados.

     BeginTransaction(); SetTransactionSuccessful(); EndTransaction(); 

    Para ver más esto … En android es muy importante utilizar las transacciones cuando se trabaja con bases de datos.

    Si, SQLite considera un cursor como una transacción, así que si usamos begin transaction () antes de insertar gran cantidad de datos, entonces use setTransactionSuccessful () second, then endTransaction () en finalmente, SQLite considerará esto Insertar evento como una transacción, en lugar de cientos de transacciones.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.