1

我想清除从服务器下载照片并使用存储它们的活动缓存,我的活动将处于活动状态。我希望当用户离开此活动时清除缓存。那么我该如何处理呢?在 onPause 中检查 isFinishing() 的状态是否是一个好的解决方案,或者我应该覆盖。我知道当用户按下后退按钮时,不确定是否会调用 isfinishing !

4

1 回答 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 回答