رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل در پاک شدن کش برنامه (حل شد)
#1
من یکی از آیتمهای یک ریسلیکلر ویو رو ثبت میکنم توی گوشیم و اون ایتم حاوی عکس هم هست
عکس با توضیحات ذخیره میشه توی گوشی
چک کردم درست هم ذخیره میشه
بعد اون ایتم رو از گوش حذف میکنم و عکس هم حذف میشه و چک کردم و حذف هم شده

بعد اگر همون آیتم رو با همون اسم و نام اما با عکس متفاوت یک بار دیگه توی گوشی ذخیره کنم دوباره همون عکس اول رو نمایش میده.
علتش چیه؟

کد زیر کل پوشه کش رو پاک میکنه

اگر کل پوشه کش برنامه پاک بشه shared prefrences هم پاک میشه؟ و کلا چه چیزایی پاک میشه وقتی پوشه کش مربوط به برنامه پاک بشه؟

حالا تست کردم با همین کد و کل پوشه پاک میشه و کش هم پاک میشه اما همچنان مشکل بنده پا برجا هست!!!

ظاهرا پوشه کش هم خالی هست چون حلقه for اجرا نمیشه و مستقیم پوشه را حذف میکنه.


کد دانلود عکس از سرور:

private Bitmap downloadUrl(String strUrl) throws IOException {
    Bitmap bitmap = null;
    InputStream iStream = null;
    File secondFile;
    Bitmap.CompressFormat format = null;
    try {
        File myDir = AdapterContext.getFilesDir();
        String Extention ="png"
        File NewsDirectory = new File("my app location and folder");
        if (!(NewsDirectory.isDirectory() && NewsDirectory.isDirectory())) {
            boolean success = (new File("check if folder is not made then it make it")).mkdir();
        }
        URL url = new URL(strUrl);
        HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
        urlConnection.connect();
        iStream = urlConnection.getInputStream();
        bitmap = BitmapFactory.decodeStream(iStream);
        secondFile = new File("my app folder"+"my file name" + Extention);
        ImageAddress = secondFile.toString();
        FileOutputStream stream = new FileOutputStream(secondFile);
        ByteArrayOutputStream outstream = new ByteArrayOutputStream();
        format = Bitmap.CompressFormat.PNG;
        bitmap.compress(format, 85, outstream);
        byte[] byteArray = outstream.toByteArray();
        stream.write(byteArray);
        stream.close();
        ImageDownloaded = true;
    } catch (Exception e) {
    } finally {
        iStream.close();
    }
    return bitmap;
}



کد حذف فولدر کش برنامه:

File dir = Context.getCacheDir();
deleteDir(dir);


public static boolean deleteDir(File dir) {
  if (dir != null && dir.isDirectory()) {
      String[] children = dir.list();
      for (int i = 0; i < children.length; i++) {
          boolean success = deleteDir(new File(dir, children[i]));
          if (!success) {
              return false;
          }
      }
      return dir.delete();
  } else if(dir!= null && dir.isFile()) {
      return dir.delete();
  } else {
      return false;
  }
}
پاسخ
تشکر شده توسط:
#2
بنده مشکل کدم درست شد.

در قسمت دانلود عکس، بنده کد زیر را قبل از برقراری ارتباط با سرور HttpUrlConnection اضافه نمودم و مشکل حل شد و نیازی به پاک کردن فولدر کش هم نیست و کلا اون کد پاک کردن فولدر کش را از برنامه حذف کردم.

urlConnection.setRequestProperty("Cache-Control", "no-cache");
پاسخ
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 1 مهمان