2

Я пытаюсь обновить фотографию профиля пользователя в настройках. Во время этого я также хочу обновить фотографию во внешнем хранилище.Внешнее хранилище 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); 
     } 

Но фотография в ящике навигации обновляется только при перезапуске приложения. Если я открою папку с моими сохраненными изображениями на своем устройстве, фотография обновлена. Знаете ли вы, где это может быть проблемой?

+1

Не уверен, что Picasso кэширует изображения, поэтому, если вы перезаписываете исходное изображение, возможно, оно возвращает кешированное изображение? – StuStirling

+0

дайте постоянное имя своему профилю для этого приложения и на открывающемся открывающемся ящике изображение в изображенииView –

+0

«После этого я хотел бы обновить фотографию профиля в ящике навигации» - для этого используйте 'finalBitmap'. Зачем вам перегружать изображение с диска? Кроме того, вызовите 'out.getFD(). Sync()' между 'flush()' и 'close()' и посмотрите, что вам может понадобиться, чтобы заставить Picasso перезагрузить его, а не полагаться на кеш. – CommonsWare

ответ

0

Я решил эту строку кода.

File filePath = getExternalCacheDir(); 
       File myDir = new File(filePath.getAbsolutePath() + STORAGE_IMAGES_PATH + STORAGE_MY_PROFILE_PHOTO); 
       Picasso.with(this).invalidate(myDir); 

 Смежные вопросы

  • Нет связанных вопросов^_^