Articles of 缓存

如何利用Android的“清除缓存”按钮

在Android的设置中,在单击应用程序时的“管理应用程序”活动中,数据会分解为应用程序,数据和缓存。 还有一个清除缓存的按钮。 我的应用程序缓存音频文件,我希望用户能够使用此按钮清除缓存。 如何存储它们以便它们与缓存混在一起并且用户可以清除它们? 我尝试使用以下两种技术存储文件: newFile = File.createTempFile(“mcb”, “.mp3”, context.getCacheDir()); newFile = new File(context.getCacheDir(), “mcb.mp3”); newFile.createNewFile(); 在这两种情况下,这些文件都列为数据而不是缓存。

在Android Webview中脱机时加载缓存

我有一个从网站加载url的应用程序。 现在我希望应用程序在脱机时使用缓存。 但我只是得到了失败页面,上面写着我没有连接到网站。 首先我将Cachemode设置为Load_Normal,但这没有帮助。 接下来,我使用ConnectivityManager尝试了一种真正“愚蠢”的方法: cm = (ConnectivityManager) this.getSystemService(Activity.CONNECTIVITY_SERVICE); if(cm.getActiveNetworkInfo().isConnected()){ mfnWebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); mfnWebView.loadUrl(url); } else{ mfnWebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); mfnWebView.loadUrl(url); } 但这只会导致应用程序崩溃。 是否有一种简单的方法可以在离线和现有时加载缓存,如果不存在则显示失败消息。

Android – 存储从网络下载的图像

我有一个问题,我是否应该(以及如何)存储从网络上加载的图像。 假设我从我的Android应用程序调用Web服务。 在这个Web服务中,我获得了Web上图像的URL。 我下载并在ListView的列表项的左侧显示此图像。 我的问题是,我应该使用什么方法来存储图像? 我是不是该: 将其保存到SDCard,检查创建ListView时是否存在(在后续请求中)并根据需要重新下载(偶尔更新图像,以防它发生变化)。 使用Context.getCacheDir()将其存储在缓存中,但可能会被迫更频繁地重新下载,因为我不能依赖缓存中的图像。 始终下载并永远不会存储图像。 图像文件本身相当小,但我希望一些用户可以下载/存储这些小图像。 哪种方法效果最好,和/或什么是首选方法? 作为一个附带问题,我应该首先加载我的ListView中的所有图像(并可能锁定UI一段时间)或者异步加载它们,但同时显示占位符图形(这可能更“丑陋”)? 这里的标准是什么?

使用Volley进行Android离线请求

我想给我的用户一个更好的离线用户体验,因此,我想构建一个存储所有POST , DELETE , PUT ( GET没有意义,因为没有网络的GET调用是缓存调用)请求用户做离线并在用户获得互联网连接后立即将其发送到服务器。 我希望它是持久的:即使应用程序被杀死,也会发送数据,以免在缓存和服务器数据之间产生不一致。 我对Google Volley和Android Networking API非常熟悉 – >我知道如何检测没有网络,如何预取数据,缓存它们等等… 但是有关于这个主题的要点或图书馆吗? 我知道最新的Facebook版本实现了这样一个系统,但我不知道他们是怎么做的(我的意思是,我知道他们正在使用Service但他们是如何做到的,不知道!)。 有人对此有任何想法,有经验吗?

如何清除(CSS)访问过的Android WebView历史记录?

我尝试通过清除前一个用户留下的任何私有数据来重用现有的WebView: CookieManager.getInstance().removeAllCookie(); webview.clearHistory(); webview.clearFormData(); webview.clearCache(true); clearHistory似乎只是清除可通过API访问的后退/前进列表,而不是用于着色Web内容中链接的内部列表。 我甚至试过以下,另一个stackoverflow回答建议: deleteDatabase(“webview.db”); deleteDatabase(“webviewCache.db”); 我仍然没有运气:CSS :visited选择器在重新加载页面后仍然有效。 另一种方法是使用API​​级别11隐私浏览function(新构造函数参数),但是我根本无法从访问过的链接中受益; 并且不能再针对旧版本。 也许某人有解决这个问题的方法? 谢谢你的帮助。 到目前为止我得到的答案摘要: 我尝试了这两个答案,但第一个似乎清除了HTML5数据存储,后者似乎特定于内置浏览器: WebStorage.getInstance().deleteAllData(); Browser.clearHistory(getContentResolver()); WebChromeClient.getVisitedHistory(ValueCallback callback)仅在我第一次在最近安装的应用程序中创建新WebView后调用。 我试图从视图层次中删除WebView并创建一个新的,但不幸的是,访问的历史似乎存储在整个应用程序中。

如何在Android应用程序中实现REST API结果的缓存?

我的Android应用程序使用REST API获取其数据。 我希望实现客户端缓存。 我们有没有内置的课程? 如果没有,这些代码是否可以重复使用? 我记得有时会遇到这样的代码。 但是我找不到它。 如果没有别的办法,我会写自己的。 以下是基本结构 public class MyCacheManager { static Map mycache; public static Object getData(String cacheid) { return mycache.get(cacheid); } public static void putData(String cacheid, Object obj, int time) { mycache.put(cacheid, obj); } } 如何为缓存对象启用时间? 还 – 最新的序列化方式是什么? 即使应用程序已关闭并稍后重新打开(如果时间尚未过期),缓存也应保持不变。 谢谢Ajay

OKHttp的改造如何在离线时使用缓存数据

我想用OkHttp进行改造,在没有互联网时使用缓存。 我准备这样的OkHttpClient: RestAdapter.Builder builder= new RestAdapter.Builder() .setRequestInterceptor(new RequestInterceptor() { @Override public void intercept(RequestFacade request) { request.addHeader(“Accept”, “application/json;versions=1”); if (MyApplicationUtils.isNetworkAvaliable(context)) { int maxAge = 60; // read from cache for 1 minute request.addHeader(“Cache-Control”, “public, max-age=” + maxAge); } else { int maxStale = 60 * 60 * 24 * 28; // tolerate 4-weeks stale request.addHeader(“Cache-Control”, “public, […]

Android – 绘图缓存 – 何时有用?

我正在阅读有关getDrawingCache和getDrawingCache ,我想知道何时使用它或什么时候不好。 基本上在我的情况下,我有一个HorizontalScrollView ,里面有很多东西,所以它的左/右滚动,大多数东西是不可见的。 如果我在视图上使用setDrawingCacheEnabled(true) ,它有帮助吗? 或者这只是在我使用自定义视图时我调用getDrawingCache() ? 在HorizontalScrollView是否还有其他’缓存‘方式?

Android Mreflection方法freeStorageAndNotifyexception

我正在使用reflection方法freeStorageAndNotify: Method freeStorageAndNotify = null; freeStorageAndNotify = service.packageManager.getClass().getMethod( “freeStorageAndNotify”, long.class, IPackageDataObserver.class); freeStorageAndNotify.invoke(PackageManager.class, maxCache + freeSpace, packageDataObserver); 这会导致InvocationTargetException: java.lang.SecurityException: Neither user 10199 nor current process has android.permission.CLEAR_APP_CACHE. 一些要点: – 我已经有android.permission.CLEAR_APP_CACHE – 这只发生在android“M”版本中(从开发者网站闪烁预览sdk) 我知道这是一个黑客攻击,谷歌没有为此提供一些官方API,但是有很多清洁应用程序只需点击一下即可清除所有设备缓存,所以如果有人知道如何通过另一种解决方法绕过这个问题我我很高兴看到这一点。 非常感谢你的帮助

如何查看Android应用程序特定的缓存?

有没有办法在Android中动态查看特定于应用程序的缓存? 我将图像保存到缓存(/ data / data / my_app_package / cache),我99%肯定他们在那里保存,但不确定他们待在一起多久。 当我使用Eclipse中的DDMS文件资源管理器查看缓存时,它始终为空。 我也尝试在ADB中检查适当的缓存目录,并且它总是空的。 有什么建议么?