我正在编写一个应用程序,它使用设备上的临时文件和云上的长期存储来记录和播放音频,因此只需在直接使用时在物理设备上可用。
它允许用户录制和查看录制内容,然后将其删除或上传到后端,然后将其从手机中删除。之后,用户然后从后端服务器下载文件,收听它,并通过电话将其删除。
这些录音可能长达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();
}
做第二个选项是否更好,以免我在缓存中遇到内存问题?
答案 0 :(得分:0)
感谢Gusman的评论,我使用了第一种方法来创建一个临时文件,并包含一些代码,用于在本地文件加载到后端服务器后清理本地文件,或者用户关闭应用程序而不上传记录( onDestroy()
)。