在android中实现应用程序范围的缓存

时间:2015-02-24 23:58:11

标签: java android caching

我正在使用LruCache的扩展名来存储网络调用的结果。目前,缓存是片段中的实例变量(它是唯一需要的位置),并且每次旋转或暂停应用程序时都会重新创建缓存。如何通过轮换和暂停/恢复应用程序来保持缓存持续存在?

我读到我可以使用setRetainInstanceState to handle the rotation case,但这对暂停和恢复情况都没有帮助,并且要求我不要将片段添加到backstack。

我也可以extend Application,但似乎有点非封装,只需要在一个片段中使用缓存。

将缓存放在Service中会是一个好方法吗?我不清楚服务如何与片段交互,但看起来我可以将服务绑定到应用程序,因此它只会在应用程序执行时终止。

1 个答案:

答案 0 :(得分:2)

我通常在Application对象本身做这些事情......

class MyApplication extends Application {

private LruCache cache; // or whatever

public Thing getThingFromCache(String key) { /* or whatever */ }

}

...不要忘记将MyApplication放入Manifest ......

<application
   android:name=".MyApplication"
   android:icon="@drawable/icon"
   android:label="@string/name"
   >

   <!-- whatever -->

</application>

另外,请考虑使用Google提供的网络库Volley