Android:我应该在哪里保存临时文件?

我的应用程序允许用户创build和修改文件。 我希望他们能够发送一个文件作为电子邮件附件。 所以,我需要先创build并写入一个临时文件,然后附加到电子邮件。 不幸的是,基于对下面问题的单独回应,似乎没有什么好方法知道电子邮件应用程序是用临时文件完成的。

Android:从我的应用程序发送带附件的电子邮件问题

因为我不能收到任何关于电子邮件已经完成的通知,所以我的删除临时文件的规则非常糟糕。 他们是像“检查临时文件onPause和onCreate;删除超过5分钟的任何东西”。

因为我的规则太难看了,所以我特别关心我应该在哪里写文件。 我不能将它们写入内部caching目录,因为它们的大小可能大大超过1mb。 创build文件夹设备的SD卡是否合理:“/ sdcard / myapp_tmp”? 这种情况的常见做法是什么?

Solutions Collecting From Web of "Android:我应该在哪里保存临时文件?"

您可以使用上下文的getExternalCacheDir()方法获取文件引用,您可以将文件存储在SD卡上。 当然,你必须像往常一样进行通常的检查,以确保外部存储器是可挂载和可写的,但这可能是存储这种types的临时文件的最佳位置。 有一件事你可能想要做的只是设置一个最大的空间量,你可以在caching目录中使用,然后,每当你需要写一个新的临时文件时,如果该文件超过了最大空间,那么开始删除临时文件,从最老的开始,直到有足够的空间。

编辑:或者,也许这样的事情会工作:

 if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { File externalRoot = Environment.getExternalStorageDirectory(); File tempDir = new File(externalRoot, ".myAppTemp"); } 

预先安装“。” 应该隐藏文件夹,我相当确定。