Java 为什么应用程序销毁时未删除缓存数据
当我尝试在MainActivity中的Java 为什么应用程序销毁时未删除缓存数据,java,android,android-ondestroy,Java,Android,Android Ondestroy,当我尝试在MainActivity中的ondestory()方法中使用下面的代码时,它不起作用。我做错了什么 代码: 如果您使用Windows操作系统 因为在Windows任务管理中,android studio启动或构建运行或停止时,一个进程正在运行 Java Jmt首先停止它,然后您可以直接删除这两个构建文件夹,如果您使用Windows操作系统,则无需清除缓存 因为在Windows任务管理中,android studio启动或构建运行或停止时,一个进程正在运行 Java Jmt首先停止它,然
ondestory()
方法中使用下面的代码时,它不起作用。我做错了什么
代码:
如果您使用Windows操作系统
因为在Windows任务管理中,android studio启动或构建运行或停止时,一个进程正在运行
Java Jmt首先停止它,然后您可以直接删除这两个构建文件夹,如果您使用Windows操作系统,则无需清除缓存
因为在Windows任务管理中,android studio启动或构建运行或停止时,一个进程正在运行
Java Jmt首先停止它,然后您可以直接删除这两个构建文件夹,无需清除缓存。您的代码有两种情况:
onDestroy()
方法的情况。因为不能保证系统总是调用它。以下是摘录自:
受保护的空onDestroy()
在销毁活动之前执行任何最终清理。这可能是因为活动正在完成(有人对其调用finish()),也可能是因为系统临时销毁活动的此实例以节省空间。可以使用isFinishing()方法区分这两种情况
注意:不要指望调用此方法作为保存数据的位置!例如,如果活动正在编辑内容提供程序中的数据,则这些编辑应在onPause()或onSaveInstanceState(捆绑包)中提交,而不是在此处提交。此方法通常用于释放资源,如与活动关联的线程,以便在其应用程序的其余部分仍在运行时,已销毁的活动不会留下此类内容。在某些情况下,系统会简单地终止活动的宿主进程,而不在其中调用此方法(或任何其他方法),因此不应使用它来执行在进程结束后仍保留的操作
派生类必须调用该方法的超类实现。如果没有,将抛出异常
super.ondestory()
之前,应该先调用deleteCacheData()
。因此,这是不正确的:
@Override
protected void onDestroy() {
super.onDestroy();
deleteCacheData();
}
这是正确的:
@Override
protected void onDestroy() {
deleteCacheData();
super.onDestroy();
}
您的代码有两种情况:
onDestroy()
方法的情况。因为不能保证系统总是调用它。以下是摘录自:
受保护的空onDestroy()
在销毁活动之前执行任何最终清理。这可能是因为活动正在完成(有人对其调用finish()),也可能是因为系统临时销毁活动的此实例以节省空间。可以使用isFinishing()方法区分这两种情况
注意:不要指望调用此方法作为保存数据的位置!例如,如果活动正在编辑内容提供程序中的数据,则这些编辑应在onPause()或onSaveInstanceState(捆绑包)中提交,而不是在此处提交。此方法通常用于释放资源,如与活动关联的线程,以便在其应用程序的其余部分仍在运行时,已销毁的活动不会留下此类内容。在某些情况下,系统会简单地终止活动的宿主进程,而不在其中调用此方法(或任何其他方法),因此不应使用它来执行在进程结束后仍保留的操作
派生类必须调用该方法的超类实现。如果没有,将抛出异常
super.ondestory()
之前,应该先调用deleteCacheData()
。因此,这是不正确的:
@Override
protected void onDestroy() {
super.onDestroy();
deleteCacheData();
}
这是正确的:
@Override
protected void onDestroy() {
deleteCacheData();
super.onDestroy();
}
该应用程序在Android操作系统上运行。我想做的是清除应用程序上的缓存销毁(退出)抱歉,但我的答案是删除android Studio的缓存这是实际手机上的应用程序缓存,但感谢您的尝试:)该应用程序正在android操作系统上运行。我想做的是清除应用程序上的缓存销毁(退出)抱歉,但我对android studioit的删除缓存的回答是实际手机上的应用程序缓存,但感谢尝试:)在我的情况下,onDestroy()从未被调用(顺便说一句,感谢我尝试的修复仍然无法工作)。那么,清理应用程序缓存最常见的做法是什么?我的意思是,我不能相信操作系统会在我的应用程序崩溃之前完成这项工作。我不知道通常的做法是如何处理这种情况。但我将使用
SharedReferences
来保存标记脏缓存需要清除的标志。然后,每当启动活动时,我都会检查标志并进行清理。我在onPause()override方法中设置了清理,这是一个符咒。使用SharedReferences iis也是明智之举。谢谢你,我很高兴听到你解决了这个问题,不客气;)在我的例子中,onDestroy()从未被调用(顺便说一句,感谢我尝试的修复仍然不起作用)。那么,清理应用程序缓存最常见的做法是什么?我的意思是,我不能相信操作系统会在我的应用程序崩溃之前完成这项工作。我不知道通常的做法是如何处理这种情况。但我将使用SharedReferences
来保存标记脏缓存需要清除的标志。然后,每当启动活动时,我都会检查标志并进行清理。我在onPause()override方法中设置了清理,这是一个符咒。使用SharedReferences iis也是明智之举。谢谢你,我很高兴听到你解决了这个问题,不客气;)