Android 内存 -- 缓存中或放在磁盘上的临时文件,完成后删除

Android Memory -- Temporary Files in Cache or Put on Disk, Delete When Done

我正在编写一个应用程序,它使用设备上的临时文件和云端的长期存储来录制和播放音频,因此只需要在直接使用时在物理设备上可用。

它允许用户录制和查看录音,然后将其删除或将其上传到后端,然后从 phone 中删除。后来,用户再从后台服务器下载文件,听了,应该是删掉了phone.

这些录音可能长达 10-15 分钟,因此它们可能会变得相当大。

我让程序以两种不同的方式工作,但我不确定哪一种方式可以正确管理内存和缓存。第一种方法是使用以下代码调用临时缓存文件:

    String fileName = UUID.randomUUID().toString().replaceAll("-", "");
    File tempFileDir = this.getCacheDir();
    File tempFile = File.createTempFile(fileName, ".3gp", tempFileDir);

此文件已被使用,但从未直接删除。

另一种选择是将非缓存文件保存到内存中,然后在不再需要时将其删除:

if (Utils.isExternalStorageWritable()) {

   String fileName = getRandomFileName();
   String outputFile = Environment.getExternalStorageDirectory().getAbsolutePath();
   outputFile += "/" + fileName + ".3gp";

   //outputFile used in MediaRecorder to record sound file, etc.
   //once file is to be deleted:

    File file = new File(outputFile);
    boolean isDeleteSuccessful = file.delete();
    }

执行第二个选项是否更好,这样我就不会 运行 进入缓存中的内存问题?

感谢 Gusman 的评论,我使用第一种方法创建了一个临时文件,并包含了清理本地文件的代码,一旦它们被加载到后端服务器上,或者在用户关闭应用程序而不上传录音 (onDestroy()).

Is it programmer responsibility to delete temp file