Articles of 缓存

MVP适配器数据缓存

我正在开发遵循MVP架构的项目。 通常,当我使用recyclerView时,我的演示者控制适配器数据。 但是现在我需要使用来自缓存(或缓存等)的数据制作回收器适配器,回收器的大小不依赖于缓存大小,所以我通过HashMap进行缓存,其中密钥是 – 回收器的位置,如果有一个项目然后数据显示地图,否则空行与“添加事件”btn。 我无法意识到这种结构中缓存的位置 – 模型(Dao或类似CacheManager)或适配器。 缓存的想法如下:我有一些types的事件存储在数据库中,每个事件修改都在db中更改它 – 因此缓存也必须更新。 主要问题是:在哪里保留此缓存并将其加载到适配器,如何使其与数据库更改保持同步。 PS我也尝试使用RX,所以如果可以用它来解决 – 试试会很有趣。 PPS如果它是Repository模式是解决方法 – 欢迎。 前一段时间阅读它。

Android:图像缓存策略和内存缓存大小

我正在实现一个图像缓存系统来缓存下载的图像。 我的策略基于两级缓存:内存级别和磁盘级别。 我的课程类似于droidfu项目中使用的课程 我下载的图像被放入一个hashmap中,Bitmap对象被包装在一个SoftRererence对象中。 此外,每个图像都永久保存到磁盘。 如果在Hashmap<String,SoftReference>找不到请求的图像Hashmap<String,SoftReference>它将在磁盘上搜索,重新加载,然后推回到hashmap中。 否则,图像将从网络下载。 由于我将图像存储到物理设备momery中,因此我添加了一个检查以保留设备空间并保持在占用空间的1M以下: private void checkCacheUsage() { long size = 0; final File[] fileList = new File(mCacheDirPath).listFiles(); Arrays.sort(fileList, new Comparator() { public int compare(File f1, File f2) { return Long.valueOf(f2.lastModified()).compareTo( f1.lastModified()); } }); for (File file : fileList) { size += file.length(); if (size > MAX_DISK_CACHE_SIZE) { file.delete(); Log.d(ImageCache.class.getSimpleName(), “checkCacheUsage: […]

如何使用Android的CacheManager?

我目前正在开发一个使用http请求获取图像的Android应用程序。 如果我可以缓存这些图像以改善性能和带宽使用,那将会非常膨胀。 我在Android参考中遇到过CacheManager类,但我真的不知道如何使用它,或者它真正做到了什么。 我已经完成了这个例子,但我需要一些帮助来理解它: /core/java/android/webkit/gears/ApacheHttpRequestAndroid.java 此外,参考说明: “网络请求被提供给该组件,如果它们无法通过缓存解析,则HTTP标头会根据情况附加到内容重新validation请求中。” 我不确定这意味着什么或它对我有什么用处,因为CacheManager的getCacheFile只接受String URL和包含标题的Map。 不确定所提到的附件是什么意思。 一个解释或一个简单的代码示例真的会做我的一天。 谢谢! 更新 这就是我现在所拥有的。 我显然做错了,只是不知道在哪里。 public static Bitmap getRemoteImage(String imageUrl){URL aURL = null; URLConnection conn = null; 位图bmp = null; CacheResult cache_result = CacheManager.getCacheFile(imageUrl,new HashMap()); if(cache_result == null){try {aURL = new URL(imageUrl); conn = aURL.openConnection(); conn.connect(); InputStream = conn.getInputStream(); cache_result = new CacheManager.CacheResult(); copyStream(is,cache_result.getOutputStream()); CacheManager.saveCacheFile(imageUrl,cache_result); […]

在android中退出时清除应用程序缓存

我想要做的是在应用程序退出时清除应用程序的缓存内存。 这个任务我可以通过这个步骤手动完成。 管理应用程序 – >“我的应用程序” – >清除缓存>> 但我想通过退出应用程序编程来完成这项任务..请帮助我们.. 提前致谢..

如何删除app的cache-folder?

我通读了缓存的Android文档(请参阅数据存储文档 )但我没有得到如何清理整个文件夹。 那么如何删除我的应用程序的缓存文件夹? 它在这条道路上: /Android/data/de.stepforward/cache/

android教程中的DiskLruCache缺少很多方法。

这是我正在关注的磁盘缓存教程。 我已将源代码下载到DiskLruCache,但源代码中不存在此示例中使用的任何方法。 http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html#disk-cache 我是否需要自己实现这些方法,或者是否有某些我在某处丢失的DiskLruCache版本?

缓存目录不存在

context.getApplicationContext().getCacheDir()返回null ? 据我所知,内部缓存目录应始终存在。 谢谢!

根据设备function和可用内存调整LRU Cache的大小

我正在考虑在Android应用中实现我的第一层缓存。 我正在考虑使用SoftReferences来确保避免OOMexception,但由于有很多关于Android如何“太快”释放这些内容的文章,我决定研究android.util.LruCache缓存。 问题:如何为实际设备正确resize? 一切听起来很不错LRU缓存是真正的解决方案,而不是SoftReferences,但是如果你真的很想避免使用OOMexception,那么使用任意数量的数百万个硬引用都会感到非常不安全。 如果你问我,这只是不安全。 无论如何,这似乎是唯一的选择。 我正在调查getMemoryClass以找出实际设备上应用程序的堆大小(+在调整缓存大小之前检查可用堆大小)。 基线是16 Megs听起来不错,但是我看过设备(例如旧时的G1)抛出OOMexception只有大约5兆字节的堆大小(根据Eclipse MAT)。 我知道G1很老了,但重点是我的经验与文档提到的16 Megs基线并不完全一致。 因此,我完全不确定如果我需要最合理的话,我应该如何扩展LRU缓存。 (对于8 Megs会很满意,并且在低规格设备上会小到1 Meg) 谢谢你的任何提示。 编辑:我指的是Android LRU缓存类: http : //developer.android.com/reference/android/util/LruCache.html

需要Android中的HttpResponseCache示例

嗨我正在尝试使用Android 4中引入的HttpResponseCache。文档确实谈到了如何安装缓存,但我完全失去了如何缓存从网上下载的图像。早期我使用的是DiskLruCache缓存它们。 有人会指出我使用HttpResponseCache的工作代码的一些例子。 编辑: – 有人能告诉我这里做错了什么: – MainActivity.java public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final long httpCacheSize = 10 * 1024 * 1024; // 10 MiB final File httpCacheDir = new File(getCacheDir(), “http”); try { Class.forName(“android.net.http.HttpResponseCache”) .getMethod(“install”, File.class, long.class) .invoke(null, httpCacheDir, httpCacheSize); Log.v(TAG,”cache set up”); } catch (Exception httpResponseCacheNotAvailable) { Log.v(TAG, “android.net.http.HttpResponseCache not available, […]

我需要将几个图像下载到目录,以便可以离线访问内容

我得到一些包含一些食物菜单项的JSON数据 请注意:这只是一个示例,有时会有超过2个图像,arrays中还有更多菜单项! { “menu”: [ { “url”: “/api/v1/menu/1”, “name”: “Best Food”, “description”: “really nice food”, “opening_time”: “every day from 9am to 6pm”, “contact_email”: “info@food.com”, “tel_number”: “+54 911 3429 5762”, “website”: “http://bestfood.com”, “images”: [ { “url”: “http://img.androidcookie.com/java/image1.jpg” }, { “url”: “http://img.androidcookie.com/java/image2.jpg” } ] }, ] } 每个项目都有一些信息和一组图像URL。 我正在使用Glide图像库来处理这些图像,并使用Retrofit 2.0从端点下载JSON数据。 一切都很顺利。 但是,我需要存储此下载的数据以供离线访问。 目前,我在现有模型上使用ORM Lite将所有JSON数据存储在数据库中。 这部分还可以。 但是,在我的数据库中,我只存储图像URL,因为我被告知在数据库中存储图像(作为blob)不是好方法。 因此,我的应用程序中有一个部分可以查看已保存的菜单,如果用户选择,可以选择将其下载以供脱机访问。 […]