我的应用程序屏幕看起来与附加的图像类似。我有多行,每行都有一个Bitmap图像,标题和描述字段。所有信息都以XML的形式从我们的支持Web服务器获取。现在,我使用了观察者设计模式,它创建了一个单独的线程,用于通过HTTP连接到我的远程服务器,下载并解析XML。 XML包括每行的图像,标题和描述的URL。
到目前为止,我尝试过几种方法,
方法1:
方法2:
在搜索上述问题时,我在WebBitmapField的黑莓手机中遇到了coderholic.com。
然后,我使用了drawRow()方法中的以下代码。据我了解的是WebBitmapField,这里使用的是观察者设计模式,图像是通过UI线程以外的线程下载的。当我的行数有限,如5或10时,它工作正常。但是当我有更多行要绘制时,它会抛出TooManyThreads
异常,因为它为每一行创建一个新线程。
我有这个链接taskworker-thread-blackberry,但对如何达到我的要求并不太清楚。
据我所知,在blackberry中,应用程序最多可以创建16个线程。所以,现在我相信。我可能需要创建一个指定最大大小为10的线程池。
任何人都可以帮我理解并实现黑莓的线程池,以解决当前的问题吗?
此外,我感谢任何人给我任何其他最符合我要求的方法。
提前致谢。
答案 0 :(得分:4)
你拥有所需的一切。所以:
TaskWorker
(使用singelton)Task
- TaskWorker
实施DownloadImageTask
课程(简单地将所有内容从Runnable.run()
添加到Task.doTask()
方法)Util.getWebData()
调用TaskWorker.addTask()
可能有更多细微的细节,但你可以弄清楚如何完成它。
我认为最好在Callback
- success(byte[] data)
和error(Throwable error)
中使用两种方法来确定最终结果并将图像转义为String
并将其转换回来。