我正在编写一个应用程序,允许用户制作照片,然后使用它做一些工作。
我以IMAGE_CAPTURE意图启动相机,并提供一条路径将照片保存到该位置。
这张照片是临时的,我想在我的应用程序完成后将其删除。
我有一个活动,我显示照片并允许用户与之交互,我认为删除它的最佳方法是使用 onDestroy 方法。
我遇到的问题是,当用户更改设备的方向时,活动将被销毁并替换为新活动,但我不能仅仅因为用户更改方向而删除文件,因为稍后需要它。
那么,我该怎么做才能删除这些文件呢?
是否有任何其他方法可以覆盖,例如onAppExit,我可以在其中删除所有临时文件?
提前致谢
我认为最好的方法是在覆盖的 onBackPressed() 方法中删除它。您会看到,后按事件是唯一的退出点,这意味着用户已完成与此活动实例的交互,并且将重新返回到它。
始终使用 getExtExternalCacheDir() API 获取 sdcard 上的缓存目录。在此路径中创建所有临时文件。卸载应用后,此缓存将被销毁
最好将getCacheDir()用于本地存储中的缓存目录路径。当设备内存不足时,将自动清除此内存。
这是一篇解释如何手动清除缓存的帖子:如何删除应用程序的缓存文件夹?
所以声明全局布尔旋转并使用它:
@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
}
onDestroy()
中检查isFinishing()
方法,如此问题的已接受答案中所述 如何区分方向变化和离开应用程序安卓