¿Cómo utilizar FileLock en android?

Creo que somos capaces de bloquear los archivos de acceso exclusivo como vi este enlace: http://developer.android.com/reference/java/nio/channels/FileLock.html

Quiero crear una guardar / cargar un archivo tanto en un proceso de fondo (servicio) y la aplicación de primer plano real. Pueden tratar de acceder a este archivo al mismo tiempo, en ese caso uno debe esperar.

No pude encontrar una muestra real para FileLock en android, acabo de leer muchos hilos que esto no es posible en Android. Pero si es así, ¿por qué la documentación tiene una sección para "FileLock"?

Esto funciona en una aplicación Java normal:

File file = ...; FileInputStream fis = new FileInputStream(file); // or FileOutputStream fos = new FileOutputStream(file); FileLock lock = fis.getChannel().lock(); // or FileLock lock = fos.getChannel().lock(); // do whatever you want with the file lock.release(); 
  1. Usted podría intentar lock() con el bloqueo, y trylock() sin bloquear
  2. FileLock no funciona en FileInputStream .
  3. En Android, FileLock funciona entre procesos, pero no funciona entre los subprocesos de un proceso.

Creo que el bloqueo de archivos funciona en la memoria del teléfono "interno", pero no funciona en la tarjeta SD.

FileLock funciona en FileInputStream pero sólo si se adquiere como un bloqueo compartido.

  FileInputStream fis = new FileInputStream(file + ext); FileChannel fileChannel = fis.getChannel(); FileLock fileLock = fileChannel.tryLock(0L, Long.MAX_VALUE, /*shared*/true); 

En realidad esto tiene sentido. Bloqueo compartido significa que podría haber cualquier número de lectores simultáneos, pero no se permiten escritores. Mientras que el bloqueo exclusivo por defecto proporciona al proceso acceso exclusivo a la escritura. Como no puede escribir con FileInputStream, tiene que adquirir bloqueo compartido en él.

  • ¿Dónde almacenar las claves de preferencias de Android?
  • Cómo obtener el icono de otras aplicaciones (Android)
  • Cómo extraer el valor de la API
  • ¿Cuál es el propósito de ClassName.this más allá de la desambiguación?
  • Las cadenas no parecen ser iguales en Java en Android, aunque imprimen las mismas
  • Abrir código fuente desde la vista de depuración edita .class después de la actualización de Android R18
  • Forma de recortar la imagen cuadrada de Android en la aplicación
  • Admob no llena todo el ancho
  • Cómo analizar los resultados de JSON de Unirest llamada
  • Eliminar los acentos de String
  • Error en el registro de Android SIP (-9 IN_PROGRESS)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.