У меня есть класс с именем Request
, который реализует Serializable
, так что я могу делать вещи, как показано ниже, чтобы сохранить весь мой Request
объект на дисккак кэшировать запрос HttpPost с изображениями на диске?
File file = new File(dir, request.name);
FileOutputStream fos = new FileOutputStream(file);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(request);
oos.close();
все работает нормально, если у меня не было образ (ы) в моем запрос. изображения (ы) выбраны с диска, но я не хочу сохранять путь (ы), так как могут быть шансы, когда пользователь удаляет/перемещает изображение (изображения).
Я знаю, что я могу делать вещи, как
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
image = baos.toByteArray();
и хранить image
в byte[]
или
String temp = Base64.encodeToString(image, Base64.DEFAULT);
в String
в моей Request
.
, но делая это означает, мне нужно, что для каждого отдельного изображения в Request
, и что бы занять несколько секунд или даже больше, в зависимости от того, как много изображений в Request
, потому что я всегда нужно конвертировать Bitmap
в String
или byte[]
, Я думал использовать LruCache для хранения моих изображений, но потом понял, что не знаю, как включить Bitmap
в MultipartEntity
. В настоящее время я использую ByteArrayBody
. не уверен, есть ли лучший способ достичь этого?
В принципе, я хочу, чтобы сохранить изображение (ы) в Request
на диск, получить Request
в более поздней точке, а затем выполнить HttpPost .... быстрее. Выполнение ByteArrayOutputStream
делает мое приложение медленным