簡體   English   中英

Android內存—緩存或磁盤中的臨時文件,完成后刪除

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM