我正在编写一个应用程序,允许用户制作照片,然后用它做一些工作。
我使用IMAGE_CAPTURE意图启动相机,并提供保存照片的路径。
这张照片是暂时的,我希望在我的应用完成后将其删除。
我有一个活动,我在其中显示照片并允许用户与其进行交互,我认为删除它的最佳方法是使用onDestroy方法。
我遇到的问题是,当用户更改设备的方向时,活动会被销毁并替换为新活动,但我无法删除文件只是因为用户稍后需要更改方向。
那么,我可以做些什么来保留这些文件?
我可以覆盖任何其他方法,例如onAppExit,我可以删除所有临时文件吗?
提前致谢
答案 0 :(得分:2)
我认为最好的方法是在活动的覆盖onBackPressed()方法中删除它。你看,后退按下事件是唯一的退出点,意味着用户与此活动实例进行了交互,并且会更新回到它。
答案 1 :(得分:2)
始终使用getExtExternalCacheDir() API获取SD卡上的缓存目录。在此路径中创建所有临时文件。卸载应用程序后,此缓存将被销毁
更好地使用getCacheDir()作为本地存储中的缓存目录路径。当设备内存不足时,该内存将自动清除。
以下是解释如何手动清除缓存的帖子:How to delete cache-folder of app?
答案 2 :(得分: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
}
答案 3 :(得分:0)
您可以查看isFinishing()
内的onDestroy()
方法,如此问题的已接受答案中所述How to distinguish between orientation change and leaving application android