2

我正在编写一个应用程序,允许用户制作照片然后对其进行一些处理。

我使用 IMAGE_CAPTURE 意图启动相机,并提供将照片保存在那里的路径。

这张照片是临时的,我想在我的应用完成后将其删除。

我有一个显示照片并允许用户与之交互的活动,我认为删除它的最佳方法是使用 onDestroy 方法。

我遇到的问题是,当用户更改设备的方向时,活动被破坏并被新的活动替换,但我不能仅仅因为用户改变方向,因为以后需要它而删除文件。

那么,我能做些什么来删除这些文件呢?

是否有任何其他方法可以覆盖,例如 onAppExit,我可以在其中删除所有临时文件?

提前致谢

4

4 回答 4

2

我认为最好的方法是在您活动的覆盖 onBackPressed() 方法中删除它。您会看到,后按事件是唯一的退出点,这意味着用户已完成与此活动实例的交互并将更新返回到它。

于 2012-09-21T11:11:09.597 回答
2

始终使用getExtExternalCacheDir() API 来获取 sdcard 上的缓存目录。在此路径中创建所有临时文件。卸载您的应用后,此缓存将被销毁

更好地使用getCacheDir()作为本地存储中的缓存目录路径。当设备内存不足时,此内存将自动清除。

这是一篇解释如何手动清除缓存的帖子:如何删除应用程序的缓存文件夹?

于 2012-09-21T11:12:51.170 回答
1

所以声明全局布尔旋转并使用它:

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {      
    super.onRestoreInstanceState(savedInstanceState);
    rotation=false;
}
@Override
protected void onSaveInstanceState(Bundle outState) {
    // TODO Auto-generated method stub
    rotation = true;
    super.onSaveInstanceState(outState);
}

然后在onDestroy()使用

if(!rotation){
//delete here
}
于 2012-09-21T11:15:23.833 回答
0

You could check the isFinishing() method from within the onDestroy() as outlined in the accepted answer for this question How to distinguish between orientation change and leaving application android

于 2014-06-30T01:06:49.460 回答