2015-08-28 3 views
1

Проблема в том, что всякий раз, когда я обновляю свое приложение на своем устройстве, размер внутренней памяти увеличивается до размера приложения.Размер памяти увеличивается каждый раз, когда я обновляю приложение на том же устройстве

У меня есть одно приложение, которое работает на планшете, связанном с приложением. то есть только это приложение будет работать на этом планшете, и это будет загрузочное приложение планшета. Благодаря этой функции я добавил код для обновления приложения внутри приложения. Я написал код для загрузки приложения с моего сервера и обновления приложения с новой версией. Также я написал код для проверки используемой памяти и полной памяти внутренней памяти устройства.

Примечание: Внешняя память отсутствует, т. Е. Для этой операции нет SD-карты.

Сценарий.

Шаг 1) Загрузите новую версию приложения в приложение и обновите его.

Шаг 2) После обновления при перезагрузке приложения я написал код на заставке, чтобы удалить все старые данные приложения. Старые данные состоят из кэша приложений, сохраненных изображений, загруженных apk и расчищенных папок, созданных приложением.

Шаг 3) Я перезагружаю устройство, чтобы проверить работоспособность. Теперь, после запуска приложения, я проверю память, предположим, что ранее используемая/общая память составляла 0,45 ГБ/5,08 ГБ. Теперь я снова следую шагу 1.

Этап 4) После перезагрузки, когда я проверяю размер внутренней памяти, удивительно, что размер памяти увеличился на 120 Мбайт, размер которого составляет +1 МБ. т.е. старый размер используемой внутренней памяти/общий 0,45 Гбит/5,08 Гбит, увеличенный размер внутренней памяти после перезагрузки и обновления приложения составляет 0,57 ГБ/5,08 ГБ

Я попытался проверить папку данных/данных, но его размер также остается неизменным, но размер внутренней памяти увеличивается до размера приложения. Я не знаю, что увеличивает размер внутренней памяти.

Есть ли место или вещь, которую ОС хранит в данных размера приложения, или мне что-то не хватает в приложении, что приводит к увеличению размера внутренней памяти до точного размера?

EDIT

код для удаления видео, которые я держу в конкретном пути

/** 
    * Method to delete all the videos from SD card on startup 
    * */ 
    public static void deleteAllVideos() { 
     new Thread(new Runnable() { 
      @Override 
      public void run() { 
       File dir = new File(directoryPath); 
       try { 
        File[] files = dir.listFiles(); 
        for (int i = 0; i < files.length; i++) { 
         files[i].delete(); 
        } 
       } catch (Exception e) { 
       } 
       dir.delete(); 
      } 
     }).start(); 
    } 

код для удаления APK из устройства

public static void deleteFile() { 
     String imagePath = Environment.getExternalStorageDirectory() 
       .getAbsolutePath(); 
     File folder = new File(imagePath); 
     try { 
      File[] filenamestemp = folder.listFiles(); 
      for (int i = 0; i < filenamestemp.length; i++) { 
       if (filenamestemp[i].getAbsolutePath().toString() 
           .endsWith(".apk")) 
        filenamestemp[i].delete(); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

Удаление кэша приложений и кэшированные изображения из память

/** 
    * Method to clear application data 
    * 
    * @param Context 
    *   context of screen 
    * */ 
    public static void clearApplicationData(Context context) { 
     File cache = context.getCacheDir(); 
     File appDir = new File(cache.getParent()); 
     if (appDir.exists()) { 
      String[] children = appDir.list(); 
      for (String s : children) { 
       if (!s.equals("lib")) { 
        deleteDir(new File(appDir, s)); 
       } 
      } 
     } 

     try { 
      File cacheDir = null; 
      if (android.os.Environment.getExternalStorageState().equals(
        android.os.Environment.MEDIA_MOUNTED)) { 
       cacheDir = new File(
         android.os.Environment.getExternalStorageDirectory(), 
         Global.CACHE_DIRECTORY); 
      } else { 
       cacheDir = context.getCacheDir(); 
      } 
      if (cacheDir.exists()) { 
       File[] filesList = cacheDir.listFiles(); 
       for (File file : filesList) { 
        file.delete(); 
       } 
      } 

     } catch (Exception e) { 
     } 

    } 

Это удаление кода, которые я использую, чтобы удалить все содержимое, которое я создаю во внутренней памяти, включая кэш приложений

+0

Показать соответствующий код пожалуйста. – F43nd1r

+0

@ F43nd1r Какой код вы ожидаете? –

+0

Особенно код, который должен удалять старый контент, но, по-видимому, нет, но все, что могло бы помочь. – F43nd1r

ответ

1

Я успешно выяснял вопросы, связанные с хранением размера увеличением проблемы.

Проблема была связана с тем, что ОС хранило состояние приложения в папке LOST.DIR во внутреннем каталоге хранилища.

В этой папке хранится информация о приложении/устройстве, так что если какая-либо потеря произойдет, она будет восстановлена ​​при следующей загрузке приложения.

Я написал код для удаления всех файлов в этой папке. После удаления моя память будет восстановлена. Удаление этих файлов не вредно для нашего приложения или устройства. Его вроде корзины окон, откуда мы можем восстановить удаленные файлы в соответствии с их использованием.

Во время этого тестирования я также обнаружил, что при закрытии устройства или перезагрузке устройства состояние нашего приложения сохраняется в папке LOST.DIR. Причина в том, что приложение является одноточечным, а устройство не работает должным образом, то есть, если мы выключим устройство напрямую, не используя кнопку питания. Это заставляет ОС сохранять состояние нашего приложения.

Вся теория дается здесь (all-you-need-to-know-about-lostdir), который также следующим

Что такое LOST.DIR?

The Lost.dir - это системная папка. Это место, где ОС Android размещает файлы, которые были восстановлены во время загрузки системы (т.е. когда вы включаете телефон). Он аналогичен «Корзине» под ОС Windows. Файлы, которые хранятся внутри этого каталога, часто восстанавливаются. В большинстве случаев вы ничего не найдете в каталоге LOST.DIR.

Какие файлы хранятся в LOST.DIR?

Если вы сохраняли файлы и вдруг телефон выключился, или, может быть, вы вытащили SD-карту, когда файлы записывались на нее - система Android помещает копии этих файлов в каталог LOST.DIR, чтобы она могла попробовать и восстановить их при следующей загрузке (при следующем запуске системы). Файлы, находящиеся в процессе копирования, также переименовываются. Поэтому, если вы найдете в папке имена файлов с именованными именами, не удивляйтесь, поскольку они только переименованы в версии прежних файлов, присутствующих на вашем устройстве. Файлы могут в конечном итоге хранится в папке LOST.DIR по следующим причинам:

1) Круто вытаскивая SD-карту из телефона Android

2) Перебои во время загрузки файлов на Android устройства

3) Внезапное замораживание операционной системы Android-устройства

4) Отключение устройства при выполнении некоторого процесса чтения-записи.

Как восстановить файлы из папки LOST.DIR?

Чтобы остановить постоянную потерю файлов из папки LOST.DIR в Android, вам необходимо быстро восстановить отсутствующие файлы, прежде чем ваше пространство памяти смартфона Android будет перезаписано некоторыми новыми данными. Поэтому рекомендуется использовать какой-то подходящий инструмент восстановления LOST.DIR Android. Yodot Android Data Recover, Recuva - это несколько примеров, которые работали для меня.

Могу ли я удалить содержимое LOST.DIR?

Для того, чтобы сэкономить драгоценное пространство памяти, он полностью нормальный, чтобы удалить содержимое LOST.DIR, поскольку он действует только как корзина. Вы также можете удалить папку LOST.DIR, но она снова появится при следующем запуске системы.Когда ваша система Android выдает сообщение «Подготовка внешней SD-карты», на самом деле проверяет содержимое LOST.DIR, и если он не находит каталог, он создает его.

Необходимые принципы:

1) Избегайте резкого удаления карты памяти Android устройства во время передачи данных в/из системы.

2) Резервное копирование изображений или других файлов на другое устройство.

3) Используйте настоящую антивирусную программу для защиты от вирусной атаки.

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

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