作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望从本地缓存重复请求 URL,而不是从服务器重新下载。我正在使用 DownloadManager ,希望它能成为 HttpURLConnection
( saw it recommended ) 的便捷替代方案,但默认情况下它不进行响应缓存。这是我的测试代码:
final Context context = getContext();
final DownloadManager manager =
Android.ensureSystemService( DownloadManager.class, context );
final DownloadManager.Request req =
new DownloadManager.Request( Uri.parse( BIG_FILE_URL ));
req.setNotificationVisibility( VISIBILITY_HIDDEN ); // hiding from user
context.registerReceiver( new BroadcastReceiver()
{
public void onReceive( final Context context, final Intent intent )
{
context.unregisterReceiver( this ); // one shot for this test
final long id = intent.getLongExtra( EXTRA_DOWNLOAD_ID, -1L );
System.err.println( " --- downloaded id=" + id );
System.err.println( " --- uri=" +
manager.getUriForDownloadedFile(id) );
}
}, new IntentFilter( ACTION_DOWNLOAD_COMPLETE ));
manager.enqueue( req );
运行上述测试两次,我在远程服务器上看到两个 GET
请求(每个请求都有一个 200
响应),并且在本地 Android 日志中显示以下内容:
20:14:27.574 D/DownloadManager( 1591): [1] Starting
20:14:28.256 D/DownloadManager( 1591): [1] Finished with status SUCCESS
20:14:28.263 W/System.err( 2203): --- downloaded id=1
20:14:28.269 W/System.err( 2203): --- uri=content://downloads/my_downloads/1
20:15:13.904 D/DownloadManager( 1591): [2] Starting
20:15:14.517 D/DownloadManager( 1591): [2] Finished with status SUCCESS
20:15:14.537 W/System.err( 2203): --- downloaded id=2
20:15:14.541 W/System.err( 2203): --- uri=content://downloads/my_downloads/2
所以它下载了两次 BIG_FILE
并将其存储在两个文件中。相反,我想要响应缓存。 DownloadManager
可以进行响应缓存吗?
附言。它看起来像'不'。所以我更正了将我带到这里的建议 ( see rev 22 )。
PPS。可以肯定的是,我测试了一个标准 HttpResponseCache .它对 DownloadManager
没有影响,尽管它默认为每个 HttpURLConnection
启用缓存。
最佳答案
默认情况下,DownloadService 下载到一个临时目的地。没有缓存请求的内置功能,但是您可以使用 DownloadManager.query() 查询之前请求的下载列表。方法。
关于android - 如何在 DownloadManager 中启用 HTTP 响应缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35191718/
我是一名优秀的程序员,十分优秀!