2012-02-23 1 views
5

現在、私は一時的なスクリーンショットを保存し、ユーザがfacebookで共有できるようにするアプリケーションを用意しています。イメージセービングコードは次のように多かれ少なかれです。一時ファイルを削除するのはプログラマの責任ですか?

// Use external cache dir, as our image file is large (>1M) 
File outputDir = this.getExternalCacheDir(); 
File tempFile = File.createTempFile("CHEOK", "CHEOK", outputDir); 
// In Desktop's J2SE, this file will automatically be deleted, once my desktop 
// application quit. However, this is not the case for Android. My guess is, JVM 
// is not terminated, even our Android application had quit. 
tempFile.deleteOnExit(); 

私も、私は(システム「戻る」ボタンを押すことで)私のAndroidアプリケーションを終了して実現し、一時ファイルがまだそこにも、私たちはdeleteOnExitを使用しています。私の推測では、JVMはまだ終了していないということです。

アクティビティのonDestroyの間に作成された一時ファイルを削除することは、私たちのアプリケーションプログラマの責任ですか?そうでない場合は、一般的なベストプラクティスは何ですか?

+0

私はAndroidがメモリを管理する方法によって引き起こされたのではないと思うのですが、戻るボタンは本当にアプリを殺すのではなくメモリに残しておきます。私のアンドロイドの携帯電話のSDカードの容量は、アプリケーションの多くがキャッシュ/一時ファイルを削除しないので、いつも小さくなっています。理由はよく分かりませんが、一度削除したほうがよいと思うのですが、 –

答えて

0

AFAIKはい、必要ないファイルを削除するのはあなたの責任です(一時的であろうとなかろうと)。 OSは、あなたのアプリがそのファイルをどれくらいの期間使用するかを知ることができません。

+0

ファイルは他のアプリも実行して独自のテンポラリファイルを作成しても、アプリは実行されていますか? –

+0

はい、あなたはそれを仮定することができます。 – m0skit0

+0

これを参考にしてください。また、私はここにそれについての投稿をしました:http://stackoverflow.com/questions/17942700/do-temporary-files-get-deleted-even-while-the-app-is-running –

1

家(またはデバイス)をきれいに保つために、それぞれのアプリケーションごとにその機能があります。 :)

JVMは、常に限りアンドロイドが起動され、実行されているとして実行されている

  • を言われていること。デバイスが再起動されるとファイルが削除されるはずです。
  • アプリが終了しても一時ファイルを残してしまうと、ユーザーが気になる可能性があります。

終了したら、一時ファイルを自分で終了してください。アプリが終了するまで待つ必要はありません!

関連する問題