2013-02-18 45 views
0

当我的应用第一次启动时,它会显示一个gridView。当这个gridView的第一个项目被按下时,它会打开一个新的活动,下载xml文件,完成后,它会在自定义列表视图中显示其详细信息。当方向发生变化时,文件将从内部存储器中删除

活性存储在文件:

data/data/mypackagename/something.xml 

我做了这个活动,以检查是否该文件存在,所以当它从主重新开放,而不是再次下载XML文件。这工作正常。当我改变方向,而这个活动仍在运行,然后我按下后退按钮(为了去主要活动),我观察DDMS中的文件资源管理器,该文件被删除!

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

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

  • 如果我不改变方向,然后按返回键,然后重新打开该文件仍然存在
  • 活动只有当我更改方向的执行文件被删除了上述行动。
+4

改变方向的唯一方法是停止并销毁您的活动并创建/开始新活动。你是否在onStop或onDestroy中删除了文件? – 2013-02-18 21:37:35

+0

检查你的onConfigChanged,或onStop/onDestroy如上所述,寻找线索。没有代码我们就没有更多的东西可以做了。 – 2013-02-18 21:58:36

+0

“活动将文件存储在” - 您引用的目录不是有效的位置。请使用'getFilesDir()'作为你的内部存储的根目录,这个内存将作为'data/data/mypackagename/files /'结束。 – CommonsWare 2013-02-18 22:14:38

回答

0

我花了一些时间弄清楚。

当第二个活动改变方向(例如风景模式),然后按下后退按钮时,创建第二个活动之前处于肖像模式的主要活动会自行销毁并重新打开以便在风景中显示模式(因为它在方向改变后第一次进入前景)。所以文件被删除了,因为Main.java中的onDestroy方法被调用以便在第二个活动被销毁后改变其方向。

相关问题