Я пытаюсь обновить фотографию профиля пользователя в настройках. Во время этого я также хочу обновить фотографию во внешнем хранилище.Внешнее хранилище Android не синхронизировано
if (checkExternalStorage()) {
File filePath = context.getExternalCacheDir();
File myDir = new File(filePath.getAbsolutePath() + path);
myDir.mkdirs();
File file = new File(myDir, fileName);
if (file.exists()) file.delete();
try {
FileOutputStream out = new FileOutputStream(file);
finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
Log.d(TAG, "File at path " + myDir.getAbsolutePath() + " was saved");
} catch (Exception e) {
Log.e(TAG, "Unsuccessful storing image in SD card " + e.getMessage());
}
}
Я успешно сохранил фотографию во внешнем хранилище. После этого я хотел бы обновить фотографию профиля в ящике навигации этой строкой вызова кода в жизненном цикле onResume.
File filePath = getExternalCacheDir();
File myDir = new File(filePath.getAbsolutePath() + STORAGE_IMAGES_PATH + STORAGE_MY_PROFILE_PHOTO);
if (ImageUtils.checkExternalStorage() && myDir.exists()) {
Picasso.with(this).load(myDir).into(profilePhoto);
}
Но фотография в ящике навигации обновляется только при перезапуске приложения. Если я открою папку с моими сохраненными изображениями на своем устройстве, фотография обновлена. Знаете ли вы, где это может быть проблемой?
Не уверен, что Picasso кэширует изображения, поэтому, если вы перезаписываете исходное изображение, возможно, оно возвращает кешированное изображение? – StuStirling
дайте постоянное имя своему профилю для этого приложения и на открывающемся открывающемся ящике изображение в изображенииView –
«После этого я хотел бы обновить фотографию профиля в ящике навигации» - для этого используйте 'finalBitmap'. Зачем вам перегружать изображение с диска? Кроме того, вызовите 'out.getFD(). Sync()' между 'flush()' и 'close()' и посмотрите, что вам может понадобиться, чтобы заставить Picasso перезагрузить его, а не полагаться на кеш. – CommonsWare