我想清除我的活动缓存,该活动从服务器下载照片并使用disklrucache和lrucache来存储我的活动是否有效。我希望当用户离开此活动以清除缓存时。那我该怎么处理呢?在onPause中检查isFinishing()的状态是否是一个很好的解决方案,或者我应该覆盖backpressed。我知道当用户按下后退按钮时,不能确定是否会调用isfinishing!
答案 0 :(得分: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方法