我不完全明白何时应该使用内存缓存(LruCache)以及何时选择磁盘缓存。或者我应该一起使用它们? 我看了here
答案 0 :(得分:0)
内存缓存:-
磁盘缓存:-
答案 1 :(得分:0)
LruCache
简而言之,LruCahce
有点HashMap
。它将在运行期间存储您的键值对,直到
查看下面的代码段。一旦上述操作之一发生,lruCahce
和randomString
都将从内存缓存中删除
public class Activity extends AppCompatActivity {
LruCache<String, Bitmap> lruCache = new LruCache<>(1 * 1024 * 1024); // That means 1Mb memory will be allocated to this LruCahce object
String ranDomString;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_store);
lruCache.put("first_bitmap_url", firstBitmap);
lruCache.put("second_bitmap_url", secondBitmap);
ranDomString = "Random string";
}
}
DiskLruCahce
相反,DiskLruCache
将保留所有上述操作(被杀死/通过后退按钮退出/屏幕旋转),并且下次Activity启动时,您可以从磁盘读取这些数据。在这种情况下,我们可以在下次启动应用程序时获取具有给定键的位图。下面的示例是Android源代码的片段:
public class Activity extends AppCompatActivity {
DiskLruCache disklruCache = new DiskLruCache.open(this.getCacheDir(), 1 * 1024 * 1024); // That means 1Mb memory will be allocated to this DiskLruCahce object
String ranDomString;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_store);
disklruCache.put("first_bitmap_url", firstBitmap);
disklruCache.put("second_bitmap_url", secondBitmap);
}
}