如何在j2me的后台下载图像



我有一个画布,我在中心显示一个图像。这个图像是通过url下载的。实际上有更多的图像要下载,这意味着如果用户点击右,我必须显示下一个图像,如果左,我必须显示另一个图像从背面。我有字符串数组存储url的图像。我想在后台下载上一个和下一个图像。怎么做呢?

以下是您需要考虑的一些问题,以使该需求在一系列设备上工作

  1. 如果图像比设备画布大小大怎么办?也就是说,图像尺寸w * h与画布尺寸w * h相比非常高?
  2. 低内存设备可以加载这么大的图像吗?
  3. 跨设备的多线程模型不一致。这是一些设备,它将允许您创建10个线程,而在其他设备它将停止在2。
  4. 我的应用程序可以支持获取图像类型吗?这是我正在下载。jpg/。gif,但我的设备不支持它。如何缓存图像?当你浏览到同一图片时,你想一次又一次地加载同一图片吗?
  5. 是否使用TCP/HTTP/RMI下载图像内容?
  6. 这段代码可以移植到不同风格的JVM上吗?

和列表继续.....

记住上面的一组问题,你会遇到一个建设性的答案是创建一个网络IO管理器和一个缓存管理器。

interface NetworkIoItem {
     Object sourceComponent;
     public void onImageDownload(Image image) {
           //Trigger the source 
     }
}

.

class NetworkIoManager extends Threads {
     Vector pendingRequestQueue;
     :
     :
     public void run() {
           //Wait on the pending request queue
           //Process all the elements in pending request queue
           //and again wait on this queue
     }
}

.

class CacheManager {
     Vector cachedContent;
     public boolean checkIfCached() {
          //Check in the cachedContent whether
          //this image exists if so return true;
     }
     public Image fetchImage() {
          //Check if the image is cached
          //if so return this cached image
          //else push a NetworkIoItem object to 
          //NetworkIOManager pending queue
     }
}

现在,对于每个图像(当前的,左边的或右边的)调用CacheManager.fetchImage(),该方法将负责为您提供缓存或从服务器下载的图像。在相同的方法中,如果图像没有缓存,它将添加NetworkIoItem对象到NetworkIoManager pendingQueue并下载它。下载完成后,它将触发NetworkIoItem.onImageDownload(...)方法。

您可以使用J2ME Polish的Touch功能下载NetworkIoManager中的图像

通过使用这种方法,您将异步获取请求URL的图像。

做点像…

Thread t = new Thread(new Runnable(){
  public void run() {
    // Your code to download image here as you were doing earlier,
    // for previous and next image
  }
});
t.start();

相关内容

  • 没有找到相关文章

最新更新