Android 当方向更改时,文件将从内部存储器中删除

Android 当方向更改时,文件将从内部存储器中删除,android,Android,当我的应用程序第一次启动时,它显示为gridView。当按下此gridView的第一项时,它会打开一个新活动,下载xml文件,完成后,它会在自定义listview中显示其详细信息 该活动将文件存储在: data/data/mypackagename/something.xml 我做这个活动是为了检查这个文件是否存在,这样当它从main重新打开时,就不必再次下载xml文件了。这个很好用。当我更改方向时,当此活动仍在运行时,然后我按下后退按钮(以便转到主活动),我在DDMS的文件资源管理器中观察到

当我的应用程序第一次启动时,它显示为gridView。当按下此gridView的第一项时,它会打开一个新活动,下载xml文件,完成后,它会在自定义listview中显示其详细信息


该活动将文件存储在:

data/data/mypackagename/something.xml
我做这个活动是为了检查这个文件是否存在,这样当它从main重新打开时,就不必再次下载xml文件了。这个很好用。当我更改方向时,当此活动仍在运行时,然后我按下后退按钮(以便转到主活动),我在DDMS的文件资源管理器中观察到文件已被删除

这种奇怪的事情确实发生了,因为当我重新打开活动时,它会再次下载xml文件。我想知道的是,方向更改与内部存储环境的更改之间是否存在联系

我在关闭应用程序时删除了该文件(主活动中的onDestroy方法),这不是问题的原因,因为在关闭第二个活动时删除了该文件

  • 如果我不更改方向,请按“上一步”按钮,然后重新打开活动文件,文件仍然存在
  • 仅当我更改方向并执行上述操作时,文件才会被删除

    • 我花了一些时间才弄明白


      当第二个活动改变方向(例如,横向模式)然后我按下后退按钮时,在创建第二个活动之前处于纵向模式的主活动会破坏自身并重新打开,以便在横向模式下显示(因为在方向改变后第一次出现在前景)。因此,文件被删除,因为在第二个活动被取消后,调用Main.java中的onDestroy方法来更改其方向。

      方向更改所做的唯一事情就是停止并销毁您的活动,并创建/启动一个新的活动。是否删除了onStop或onDestroy中的某个位置的文件?请检查onConfigChanged或onStop/onDestroy(如上所述)以获取线索。没有代码,我们就无能为力。“活动将文件存储在”--您引用的目录不是有效位置。请使用
      getFilesDir()
      作为内部存储的根目录,它将作为
      data/data/mypackagename/files/
      结束。