Android 旋转设备时保存缓存

Android 旋转设备时保存缓存,android,caching,gallery,Android,Caching,Gallery,我有一个厨房 我使用lazyload下载图像,但当我旋转设备时,它会重新加载所有图像,而不使用缓存 如果我使用android:configChanges=keyboardHidden |方向,则当前图像的大小与最新方向相同 要使图像显示全尺寸,我需要: Display display = ((WindowManager)getSystemService(Context.WINDOW_SERVICE)) .getDefaultDisplay()

我有一个厨房

我使用lazyload下载图像,但当我旋转设备时,它会重新加载所有图像,而不使用缓存

如果我使用android:configChanges=keyboardHidden |方向,则当前图像的大小与最新方向相同

要使图像显示全尺寸,我需要:

Display display = ((WindowManager)getSystemService(Context.WINDOW_SERVICE))
                           .getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();

旋转屏幕时,您将经历活动生命周期。该活动通过onDestroy并调用其onCreate方法。您必须在onCreate中重做任何显示计算并查看更改,并使用savedInstanceState保存应用程序数据


我希望这就是您所要求的

您需要覆盖OnConfiguration Changed事件

在我的应用程序中,我正在播放音乐,当你翻转手机时,它会停止,然后我发现,如果我覆盖了配置更改,我可以告诉它重新启动计时器,但没有丢失任何东西。我知道这正是你想要的,但它可能会帮助你朝着正确的方向前进

 @Override
             public void onConfigurationChanged(Configuration newConfig) {
               super.onConfigurationChanged(newConfig);
              startTimer();

             }

不鼓励重写OnConfiguration Changed,因为要使其正确,您需要做大量工作

您要做的是在活动中实现OnRetainonConfiguration实例。在您的活动被终止之前,当系统知道它将在某一时刻重新启动它时(例如,为了屏幕旋转),会调用此函数

onRetainNonConfigurationInstance的实现可能会返回它喜欢的任何对象。这是一个很好的选择,或者在您的情况下,返回缓存。此对象将被保留并可供下次调用您的活动使用

在onCreate方法中,调用getLastNonConfigurationInstance检索系统为您保存的对象。如果此函数返回null,请按正常方式继续。如果它返回非null,则该对象将是您之前从OnRetainonConfiguration实例传回的对象,您可以从该对象中提取所需的任何信息。这通常意味着您不需要savedInstanceState捆绑包或保存的首选项中的任何内容

我相信,通过这种方式,即使是打开的套接字、运行的线程和其他对象也可以在配置更改中保留


添加:如果您确实通过了onRetainonConfiguration实例,请不要挂起它。您将避免释放大量资源。提取您需要的信息,然后发布。

谢谢!这就是我要找的!