[英]Android Memory — Temporary Files in Cache or Put on Disk, Delete When Done
我正在編寫一個應用程序,該設備使用設備上的臨時文件和雲中的長期存儲來記錄和播放音頻,因此僅在直接使用時才需要在物理設備上可用。
它允許用戶記錄和查看記錄,然后將其刪除或將其上傳到后端,然后從電話中刪除。 稍后,用戶然后從后端服務器下載文件,進行聆聽,應將其從電話中刪除。
這些錄音可能長達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()
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.