如何在DownloadManager中启用HTTP响应缓存?
我想要重复请求从本地缓存中提供的URL,而不是从服务器重新下载。 我正在使用DownloadManager,希望它是HttpURLConnection
一个方便的替代方法(看到它推荐),但默认情况下它没有响应缓存。 这是我的测试代码:
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
两次BIG_FILE
并将其存储在两个文件中。 相反,我想要响应缓存。 DownloadManager
做响应缓存吗?
PS。 它看起来像'不'。 所以我纠正了把我带到这里的建议(见第22卷)。
PPS。 可以肯定的是,我测试了一个标准的HttpResponseCache。 它对DownloadManager
没有任何影响,尽管它默认为每个HttpURLConnection
启用了缓存。
DownloadService下载到默认的临时目标。 没有内置功能来缓存请求,但是您可以使用DownloadManager.query()方法查询之前请求的下载列表。
链接地址: http://www.djcxy.com/p/90817.html上一篇: How to enable HTTP response caching in the DownloadManager?