我想清除从服务器下载照片并使用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 回答