问题标签 [android-lru-cache]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 如何在 Android 中实现内存图像缓存?
到目前为止,我在 Android 中为图像使用SoftReference缓存。此缓存用于 ListViews 中显示的图像,如果剩余内存足够,则应有助于将未显示在屏幕上的项目图像保存在内存中。
这样做的问题是,软引用几乎在最后一个硬引用被释放的那一刻就被垃圾收集了。这样做的结果是,从屏幕上删除的图像此时会被垃圾收集,如果用户在 ListView 中滚动回此条目,则图像会从内部手机内存中重新加载,从而导致复杂的延迟加载过程,从而导致在频繁重绘列表和一般糟糕的表现。
软引用行为的错误请求指出这是预期的行为,您应该使用LRU-Cache来缓存此类内容。
知道我的问题。LRU 缓存只会占用我允许的内存。但是如果应用程序需要大量内存,它不会释放内存。我应该如何确定我可以允许缓存使用多少内存,如果手机内存情况变得紧张,有没有办法减少缓存的大小?
目前,图像缓存保存在应用程序中,作为所有活动的一种全局图像存储。这将导致我的应用程序不断使用图像缓存的所有内存,即使我的活动在后台或被破坏。
android - 在 Android 中使用 LruCache 的 NoSuchMethodError
我在使用从 Android 中的 LruCache 继承的自定义类时出错。它应该下载图像并缓存它们;昨天,它正在工作,但今天早上我遇到了这个问题。
这是该类的代码:
这是来自 LogCat 的错误:
知道为什么会发生这种情况吗?
非常感谢大家。
编辑:我刚刚意识到 Google Galaxy Nexus S 手机不会发生此错误,但 Samsun Galaxy 会发生此错误。有人知道为什么吗?
android - 何时应该使用 LRUCache 回收位图?
我正在使用LRUCache
缓存存储在文件系统上的位图。我根据此处的示例构建了缓存:http: //developer.android.com/training/displaying-bitmaps/cache-bitmap.html
问题是我在使用该应用程序时经常看到 OutOfMemory 崩溃。我相信当 LRUCache 驱逐一个图像为另一个图像腾出空间时,内存并没有被释放。
当图像被驱逐时,我添加了对 Bitmap.recycle() 的调用:
这修复了崩溃,但它也导致图像有时不会出现在应用程序中(只是图像应该存在的黑色空间)。任何时候发生这种情况,我都会在我的 Logcat: 中看到这条消息Cannot generate texture from bitmap
。
快速的谷歌搜索显示,这是因为正在显示的图像已被回收。
那么这里发生了什么?如果我只是在它们被删除后回收它们,为什么回收的图像仍然在 LRUCache 中?实现缓存的替代方法是什么?Android 文档明确指出 LRUCache 是要走的路,但他们没有提到回收位图的必要性或如何这样做。
已解决:
如果它对其他人有用,则接受的答案所建议的解决此问题的方法是不要执行我在上面的代码示例中所做的事情(不要在entryRemoved()
调用中回收位图)。
相反,当您完成 ImageView 时(例如onPause()
在活动中,或在适配器中回收视图时)检查位图是否仍在缓存中(我在isImageInCache()
缓存类中添加了一个方法),如果它是不,然后回收位图。否则,别管它。这修复了我的OutOfMemory
异常并阻止了回收仍在使用的位图。
android - 使用 Android 的 lrucache 示例
我需要帮助理解 androids LruCache。我想用来将图像加载到我的网格视图中,以使加载/滚动更好。有人可以使用 LruCache 发布示例代码吗?提前致谢。
android - 使用 LruCache 缓存图像
我正在尝试在 android 中使用 LruCache 来缓存一些图像,但它没有缓存
这是代码
这里是它的其他方法
我在这里使用它们这是我的代码
android - 为什么使用 android-support-v4 时找不到 android.util.LruCache.*?
我正在编写一个使用 LruCache 的项目,该项目包含在 android-support-v4.jar 兼容库中。在带有 JB 的设备上运行时,代码运行良好,但是当我在带有 GB 的 Droid X 上运行它时,应用程序因以下错误而死:
Utility.java:49 看起来像这样:
所以我在任何地方引用 LruCache 或其方法都会导致错误。首先想到的是 android-support-v4.jar 不知何故被排除在 APK 文件之外,但事实并非如此。我将jar文件放在libs/下,运行ant debug后检查classes.dex.d,我看到它添加了以下行:
我的第二个想法是,也许 LruCache 不在 android-support-v4 中,但是查看源代码我看到下面的源文件在那里,并且它具有我正在尝试使用的方法:
那为什么找不到呢?
android - Android系统停止时如何处理活动?
我很好奇当应用程序从屏幕上关闭并且用户切换到其他应用程序时应用程序的活动会发生什么。在activity圈中,activity会到达onStop(),那么在activity是onRestart()还是relaunch之前系统是如何处理的呢?引擎盖下到底发生了什么?还在缓存中,被 LRU 代替了?
任何人都有一些想法或知道一些讨论这个问题的文章?
如果可能的话,任何人都可以提到一些源代码来阅读吗?
android - 从数据库缓存小位图
当我的应用程序连接到服务器时,我会检查哪些图标已过时或丢失。
我将这些图标存储在 sqllite 数据库中,图标不是很大,大约在 5-10kb 之间。
每次活动开始时,我都会去数据库并获取必要的图标。
但是我的许多活动都使用相同的图标,所以我想从数据库中获取它们一次,然后将它们缓存在某个地方以加快我的应用程序。
我该怎么做?
我正在阅读此链接: http: //developer.android.com/training/displaying-bitmaps/cache-bitmap.html,他们提到了用于位图的 lruCache。
但这对我想要实现的目标来说是不是有点矫枉过正?
android - Android Lrucache 引用/对象是否重复?
我想通过应用 Android LruCache 来提高我的应用程序速度并避免对服务器的大量调用。这是我的场景:
我创建了 2 个 LruCache 对象。
mItemsCache 将保存可以通过唯一 ID 字符串检索的所有项目的缓存。另一方面,mListItemsCache 将缓存所有不同的项目列表。每个列表都是基于 mItemsCache 上的可用项目构建的。
我的问题是从 mListItemsCache 或 mItemsCache 检索到的 Item 实际上是同一个 Object 吗?
由于put(K,V),每次将数据存储到LruCache时都会重复数据吗?
android - 使用 LruCache 中的图像滚动快速 viewPager
我有一个 viewPager 有 4 个需要调整大小的图像。我实现了不同的选项,但没有选项运行。我写了不同的选项:
在 getView 中:
位图获得:
/li>
但它非常缓慢。
我将最后一个代码放在 AsyncTask() 中,但无法快速滚动。
我覆盖
我只在状态为时显示图像,
SCROLL_STATE_IDLE
但效果与其他情况相同。我使用 LruCache,我将图像保存在 Asynctask 中的 LruCache 中。
/li>
在我把 instanceItem
但问题与上一个案例相同,我无法快速滚动,应用程序也很慢。
我有质量和尺寸都很大的图像。如何在 viewPager 中快速滚动?