サーバーから写真をダウンロードし、 disklrucacheとlrucacheを使用して写真を保存するアクティビティのキャッシュをクリアしたいのですが、アクティビティがアクティブになります。ユーザーがこのアクティビティを離れたときにキャッシュをクリアしたい。では、どうすればこれを処理できますか?onPause でisFinishing () の状態を確認するのは良い解決策ですか、それとも backpressed をオーバーライドする必要がありますか。ユーザーが戻るボタンを押したときに isfinishing が呼び出されるかどうかは定かではありません。
質問する
318 次
1 に答える
1
アプリケーションの動作をどのようにしたいかによって異なります。
アクティビティが終了したときにキャッシュをクリアしたい場合は、それらを onCreate に保存しています。
public void onDestroy(){
super.onDestroy();
// clear your cache
}
ただし、ユーザーがアクティビティを離れたとき、つまり一時停止したときにキャッシュをクリアする場合は、onPause
メソッドでキャッシュをクリアする必要があります。ただし、その時点でデータをonResume
メソッドに保存する必要があります。バックグラウンドでもアクティビティのメモリを解放する方が良いオプションだと思います。
編集:
onKeyDown のソースコードより
public boolean onKeyDown(int keyCode, KeyEvent event) {
1801 if (keyCode == KeyEvent.KEYCODE_BACK) {
1802 if (getApplicationInfo().targetSdkVersion
1803 >= Build.VERSION_CODES.ECLAIR) {
1804 event.startTracking();
1805 } else {
1806 onBackPressed();
1807 }
1808 return true;
1809 }
したがって、戻るボタンが押されると onBackPressed が呼び出されることがわかります。戻るボタンの処理だけが必要なので、onBackPressedメソッドをオーバーライドする方がよい
于 2013-04-16T16:59:23.490 に答える