gpt4 book ai didi

android - 每次我在同一设备上更新应用程序时,内存大小都会增加

转载 作者:行者123 更新时间:2023-11-30 01:55:45 24 4
gpt4 key购买 nike

问题是每当我在我的设备上更新我的应用程序时,内存的大小都会增加到应用程序的大小。

我有一个应用程序在关联的平板电脑上运行。即只有该应用程序会在该平板电脑上运行,并且它将成为平板电脑的启动应用程序。由于此功能,我添加了代码以在应用程序内部更新应用程序。我已经编写了从我的服务器下载应用程序并使用新版本更新应用程序的代码。我还写了一些代码来检查设备内部存储器的已用内存和总内存。

注意:没有外部存储器,即没有可用于此操作的 SD 卡。

场景是。

第 1 步)我在应用程序中下载新版本的应用程序并进行更新。

第 2 步)在应用程序重新启动时更新后,我在初始屏幕上编写了代码以删除所有旧的应用程序数据。旧数据包括应用程序缓存、存储的图像、下载的 apk 和应用程序创建的清除文件夹。

第 3 步)我重新启动设备以检查工作功能。现在应用程序启动后我检查内存,假设以前使用/总内存为 0.45GB/5.08GB。现在我再次执行步骤 1。

第 4 步)重新启动后,当我检查内存大小时,令人惊讶的是内存大小增加了 120MB,这是我的应用程序大小的 +-1MB。即旧的已用内存大小/总计 0.45Gb/5.08Gb 重启和更新应用程序后增加的内存大小为 0.57GB/5.08GB

我试图检查数据/数据文件夹,但它的大小也保持不变,但内部存储器的大小增加到应用程序的大小。我不知道是什么增加了内部存储器的大小。

操作系统是否在应用程序大小数据中保留了任何地方或东西,或者我是否在应用程序中丢失了导致内部存储器大小增加到确切大小的东西?

编辑

删除我保存在特定路径中的视频的代码

/**
* 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) {
}

}

这些是我用来删除我在内存中创建的所有内容(包括应用程序缓存)的删除代码

最佳答案

我已经成功找到与存储大小增加问题相关的问题。

问题是由于操作系统将应用程序的状态存储在内部存储目录的 LOST.DIR 文件夹中。

此文件夹存储有关应用程序/设备的信息,因此如果发生任何丢失,它将在应用程序的下一次启动时恢复。

我已经编写了删除此文件夹中所有文件的代码。删除后我的内存恢复了。删除这些文件对我们的应用程序或设备无害。就像windows的回收站一样,我们可以根据用途恢复删除的文件。

在此测试期间,我还发现,当我们关闭设备或重新启动设备时,我们的应用程序状态会保存在 LOST.DIR 文件夹中。原因是应用程序是单例的,设备没有正确关闭,即如果我们直接关闭设备,而不使用电源按钮。这会导致操作系统保存我们应用程序的状态。

这里给出了整个理论(all-you-need-to-know-about-lostdir)也如下

什么是 LOST.DIR?

Lost.dir 是一个系统文件夹。它是 Android 操作系统放置系统启动期间恢复的文件的地方(即当您打开手机时)。它类似于 Windows 操作系统下的“回收站”。存储在此目录中的文件通常是可恢复的。大多数时候,您在 LOST.DIR 目录中根本找不到任何东西。

LOST.DIR 中存储了哪些文件?

如果您在保存文件时手机突然关机,或者您在写入文件时拔出 SD 卡 - Android 系统会将这些文件的副本放在 LOST.DIR 目录中,以便它可以尝试恢复它们在下次启动时(下次系统启动时)。复制过程中的文件也被重命名。因此,如果您在该文件夹中发现名称奇怪的文件,请不要感到惊讶,因为它们只是您设备上存在的旧文件的重命名版本。 由于以下原因,文件可能最终存储在 LOST.DIR 文件夹中:

1) 安卓手机突然拔出SD卡

2) 在 Android 设备上下载文件时中断

3) Android设备操作系统突然卡顿

4) 在进行一些读写过程时关闭设备。

如何从 LOST.DIR 文件夹中恢复文件?

为了防止 Android 中 LOST.DIR 文件夹中的文件永久丢失,您必须在 Android 智能手机内存空间被一些新数据覆盖之前快速恢复丢失的文件。因此,建议使用一些相关的 LOST.DIR Android 恢复工具。 Yodot Android Data Recover、Recuva 是几个对我有用的例子。

我可以删除 LOST.DIR 的内容吗?

为了节省宝贵的内存空间,删除 LOST.DIR 的内容是完全正常的,因为它只是一个回收站。您也可以删除 LOST.DIR 文件夹本身,但它会在下次系统启动时重新出现。当您的 Android 系统抛出一条消息说“准备外部 SD 卡”时,它实际上正在检查 LOST.DIR 的内容,如果找不到目录,它会创建一个。

必要的指南:

1) 在向系统传输数据或从系统传输数据时,避免突然移除 Android 设备的存储卡。

2) 将您的图像或其他文件备份到其他设备。

3) 使用正版安卓杀毒软件保护自己免受病毒攻击。

关于android - 每次我在同一设备上更新应用程序时,内存大小都会增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32271876/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com