¿Cuál es el uso de MemoryFile en android

Quiero escribir algunos bytes en una memoria compartida. Esto se hace en mi aplicación1. Desde mi otra aplicación: application2 Quiero acceder a esa memoria compartida para leer los bytes escritos. Para este propósito he intentado usar la clase MemoryFile de android. Estoy atascado como la forma de referirse a la misma memoria de fragmentos entre dos aplicaciones diferentes. Ahora también estoy confundido si memoryFile se utiliza para el mismo propósito o no. Http://developer.android.com/reference/android/os/MemoryFile.html este enlace que encontré con respecto al tema. Gracias por adelantado. Krishna

Si desea utilizar algunos procesos MemoryFile con MemoryFile puede utilizar el siguiente método fugly :

 import android.os.MemoryFile; import android.os.ParcelFileDescriptor; import java.io.FileDescriptor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class MemoryFileUtil { private static final Method sMethodGetParcelFileDescriptor; private static final Method sMethodGetFileDescriptor; static { sMethodGetParcelFileDescriptor = get("getParcelFileDescriptor"); sMethodGetFileDescriptor = get("getFileDescriptor"); } public static ParcelFileDescriptor getParcelFileDescriptor(MemoryFile file) { try { return (ParcelFileDescriptor) sMethodGetParcelFileDescriptor.invoke(file); } catch (IllegalAccessException e) { throw new RuntimeException(e); } catch (InvocationTargetException e) { throw new RuntimeException(e); } } public static FileDescriptor getFileDescriptor(MemoryFile file) { try { return (FileDescriptor) sMethodGetFileDescriptor.invoke(file); } catch (IllegalAccessException e) { throw new RuntimeException(e); } catch (InvocationTargetException e) { throw new RuntimeException(e); } } private static Method get(String name) { try { return MemoryFile.class.getDeclaredMethod(name); } catch (NoSuchMethodException e) { throw new RuntimeException(e); } } } 

Lo que debería buscar es el #getParcelFileDescriptor(MemoryFile) que puede devolver desde una implementación de ContentProvider#openFile(Uri, String) .

Sospecho que los archivos de memoria no tienen el método getParcelFileDescriptor. Cuando comenté este método relacionado con getParcelFileDescriptor y uso getFileDescriptor. Funcionó muy bien.

 import java.io.FileDescriptor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import android.os.MemoryFile; /** * Invoke hidden methods using reflection * */ public class MemoryFileUtil { private static final Method sMethodGetFileDescriptor; static { sMethodGetFileDescriptor = get("getFileDescriptor"); } public static FileDescriptor getFileDescriptor(MemoryFile file) { try { return (FileDescriptor) sMethodGetFileDescriptor.invoke(file); } catch (IllegalAccessException e) { throw new RuntimeException(e); } catch (InvocationTargetException e) { throw new RuntimeException(e); } } private static Method get(String name) { try { return MemoryFile.class.getDeclaredMethod(name); } catch (NoSuchMethodException e) { throw new RuntimeException(e); } } } 

Y el descriptor de archivo creado del archivo de la memoria.

 FileDescriptor fd = MemoryFileUtil.getFileDescriptor(memFile); 

MemoryFile se puede utilizar para asignar a la memoria física. El descriptor de archivo de resultados (fd) se puede pasar al cliente (lado de intercambio de memoria). El cliente puede asignar el mismo fd nativo a la misma región de memoria. La memoria puede entonces ser compartida usando el fd nativo, que se puede asignar a la capa de java usando InputStream.

Consulte este enlace para obtener más detalles:
Compartir la memoria usando ashem.

  • ¿Por qué se recomienda no retener el fragmento con la interfaz de usuario?
  • ¿Por qué Android no limpia la memoria después de terminar la actividad?
  • ¿Cómo averiguar la huella de memoria de mi aplicación para Android?
  • Gráficos Android gran consumo de memoria montón? - LibGDX
  • Causas potenciales de pérdidas de memoria en Android
  • Fuga de memoria de Android EditText
  • Cómo asignar memoria para el simulador de Android más de 768M en Windows?
  • Memoria interna llena de imágenes, probablemente causada por Bitmap.compress (formato, int, flujo)
  • Android Universal Image Loader - ¿Cómo configuro las especificaciones correctamente?
  • ¿Por qué Rxjava podría causar fugas de memoria?
  • Android setBackgroundResource causa excepción de la memoria
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.