2012-10-08 43 views
1

我需要创建一个图像库。图像保存在远程服务器中。黑莓客户端需要下载并呈现给用户界面(图库视图)。黑莓的异步图像下载器

我已经使用Android的“UniversalImageDownloaer”库。但现在,我正在寻找任何这样的免费软件/开放源码库,这将有助于我达到我的BlackBerry目的。任何人都可以帮助我指导我获得资源。

我需要考虑下面的事情

  1. 异步镜像下载
  2. 库视图
  3. 图像缓存

编辑-1 从我以往的经验,我明白了黑莓手机在运行时最多可创建250个(很多为5 +/-)的线程。并且每个应用程序限制为17个线程数。所以我必须研究线程池并为我的需求提供安全线程。

+0

只是一个评论。即使您有超过17张图片可供下载,您甚至不希望为此使用超过17个线程。并行运行多个网络请求并不会让它们变得更快。如果某些映像位于不同的服务器上,则有多个工作线程可能会很有用,因此如果某个服务器停机(或速度较慢),则不会阻止从其他服务器下载的进度。但是,你不会从17个工作线程中受益。所以,这在几乎所有情况下都不是什么限制。 – Nate

+0

@Nate。我并不想要创建17个工作线程。我只是分享了我的想法。 –

回答

1

我不知道任何图书馆的BB延迟加载。您可以尝试将该库移植到BlackBerry或DIY上。让我们来看看你怎么能做到这一点:

  1. 您可以编写一个消费者线程,这将在同一时间下载的图像(在黑莓,你不会得到并行多少的性能提升下载)。该使用者可以从堆栈中获取URL。用户界面(屏幕,列表)将在每次需要图像时向用户提交请求。该请求只是将资源URL传递给使用者,以便将其放在堆栈的顶部。同时,GUI应显示默认图像或加载消息。 Java中有很多关于如何以线程安全的方式设计消费者生产者方案的好书和手册,但它超出了这个答案的范围。
  2. 从OS 5.0开始,您有PictureScrollField类,它允许您显示一排滚动图像,并且可以在一定程度上进行自定义。我想,SDK中的示例文件夹中有一个示例演示应用程序。
  3. 如果在程序执行过程中可能对同一图像发出多个请求,则缓存是一个有趣的增强。您可以将它们保存在使用者堆栈的RAM中,或者将它们保存到SDCard中的文件夹中。消费者会首先查看缓存,并且只有在它不存在的情况下才会启动远程下载。