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.

  • Estilos de herencia múltiple
  • RETROFIT POST Objeto Realm
  • Java SDK Manager se bloquea con "flashplayerplugin" en la salida de línea de comandos
  • Actualización de una aplicación de Android que utiliza la facturación de aplicaciones
  • Tablas de material de Android 5.0 con barra de herramientas
  • Diferenciación entre desplazamiento de usuario y cambio de página de programación en ViewPager
  • 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?

  • Cómo eliminar las preferencias de Android de la pantalla
  • Diferencia entre system.gc () y runtime.gc ()
  • Eliminar la sombra de barra de notificación en la aplicación de Android
  • PagerTabStrip tabs alineación a la izquierda
  • Gradle, Javadoc y la documentación de Android
  • Habilitar el desplazamiento horizontal en una vista web
  • 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.