gpt4 book ai didi

android - 跨 Activity 访问 LRU 磁盘缓存的问题

转载 作者:行者123 更新时间:2023-11-30 03:49:53 25 4
gpt4 key购买 nike

我正在使用 Jake Wharton's LRU disk cache存储和检索显示在 ListView 中的位图。只要我在同一个 Activity 中存储和访问位图,这就可以正常工作。但是,如果我尝试从应用程序中的其他 Activity 访问缓存(即这样我就不必两次下载相同的图像),我会收到 NullPointerException。我在这里错过了什么吗?这不是可以/将要删除文件的内存缓存。只要我将它们指向内部存储中的正确目录,是否应该可以从应用程序中的所有 Activity 访问磁盘缓存?

01-14 22:53:44.465: E/AndroidRuntime(10720): java.lang.NullPointerException
01-14 22:53:44.465: E/AndroidRuntime(10720): at java.util.regex.Matcher.reset(Matcher.java:181)
01-14 22:53:44.465: E/AndroidRuntime(10720): at java.util.regex.Matcher.<init>(Matcher.java:94)
01-14 22:53:44.465: E/AndroidRuntime(10720): at java.util.regex.Pattern.matcher(Pattern.java:290)
01-14 22:53:44.465: E/AndroidRuntime(10720): at com.example.echofriendly.DiskLruCache.validateKey(DiskLruCache.java:629)
01-14 22:53:44.465: E/AndroidRuntime(10720): at com.example.echofriendly.DiskLruCache.get(DiskLruCache.java:375)
01-14 22:53:44.465: E/AndroidRuntime(10720): at com.example.echofriendly.DiskLruImageCache.containsKey(DiskLruImageCache.java:145)
01-14 22:53:44.465: E/AndroidRuntime(10720): at com.example.echofriendly.ChatroomFragment.getMessages(ChatroomFragment.java:309)
01-14 22:53:44.465: E/AndroidRuntime(10720): at com.example.echofriendly.ChatroomFragment.access$3(ChatroomFragment.java:284)
01-14 22:53:44.465: E/AndroidRuntime(10720): at com.example.echofriendly.ChatroomFragment$2.run(ChatroomFragment.java:94)
01-14 22:53:44.465: E/AndroidRuntime(10720): at java.lang.Thread.run(Thread.java:1019)

最佳答案

Shouldn't the disk cache be accessable from all the activites within the app, so long as I point them to the right directory within the internal storage?

听起来您正在每个需要的 Activity 中实例化缓存。我不认为这是个好主意。由于 Jake 的 LruCache 使用日志,在同一目录上工作的不同实例在我看来很容易相互分散注意力。

我的建议是引入某种单例,作为 Activity 和缓存之间的一层,或者只为整个应用程序存储对一个缓存实例的引用。

此外,我建议您使用某种二级缓存,例如内存缓存与磁盘缓存相结合(这是我在我的应用程序中所做的)。因此,您可以首先检查内存缓存,如果图像缓存在那里,则可以非常快地获取图像。 (可以是同步的)如果不存在,请询问磁盘缓存。 (应该是异步的)作为最后一次调用,您将下载它。 (也是异步的)

关于android - 跨 Activity 访问 LRU 磁盘缓存的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14322987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com