Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么应用程序销毁时未删除缓存数据_Java_Android_Android Ondestroy - Fatal编程技术网

Java 为什么应用程序销毁时未删除缓存数据

Java 为什么应用程序销毁时未删除缓存数据,java,android,android-ondestroy,Java,Android,Android Ondestroy,当我尝试在MainActivity中的ondestory()方法中使用下面的代码时,它不起作用。我做错了什么 代码: 如果您使用Windows操作系统 因为在Windows任务管理中,android studio启动或构建运行或停止时,一个进程正在运行 Java Jmt首先停止它,然后您可以直接删除这两个构建文件夹,如果您使用Windows操作系统,则无需清除缓存 因为在Windows任务管理中,android studio启动或构建运行或停止时,一个进程正在运行 Java Jmt首先停止它,然

当我尝试在MainActivity中的
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也是明智之举。谢谢你,我很高兴听到你解决了这个问题,不客气;)