调用isFinishing()或backbuttonpressed?

时间:2013-04-16 16:45:21

标签: android

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

1 个答案:

答案 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方法