public void deactivate() { if (!isDeactivated()) { try { if (Build.VERSION.SDK_INT < 21) { native_munmap_int(mAddressInt, mLength); mAddressInt = 0; } else { native_munmap_long(mAddressLong, mLength); mAddressLong = 0; } } catch (IOException ex) { Log.e(LOG_TAG, "Failed to deactivate, error: " + ex.toString()); } } }
public void writeBytes(byte[] buffer, int srcOffset, int destOffset, int count) throws IOException { if (isDeactivated()) { throw new IOException("Can't write to deactivated memory file."); } if (srcOffset < 0 || srcOffset > buffer.length || count < 0 || count > buffer.length - srcOffset || destOffset < 0 || destOffset > mLength || count > mLength - destOffset) { throw new IndexOutOfBoundsException(); } if(Build.VERSION.SDK_INT < 21) { native_write_int(mFD, mAddressInt, buffer, srcOffset, destOffset, count, false); } else { native_write_long(mFD, mAddressLong, buffer, srcOffset, destOffset, count, false); } }
public int readBytes(byte[] buffer, int srcOffset, int destOffset, int count) throws IOException { if (isDeactivated()) { throw new IOException("Can't read from deactivated memory file."); } if (destOffset < 0 || destOffset > buffer.length || count < 0 || count > buffer.length - destOffset || srcOffset < 0 || srcOffset > mLength || count > mLength - srcOffset) { throw new IndexOutOfBoundsException(); } if(Build.VERSION.SDK_INT < 21) { return native_read_int(mFD, mAddressInt, buffer, srcOffset, destOffset, count, false); } else { return native_read_long(mFD, mAddressLong, buffer, srcOffset, destOffset, count, false); } }