2011-09-29 32 views
1

我的应用程序的要求是联系web服务,获取xml,解析它并使用listfield显示它。我正在调用所有这些类xmlhandler,objectmodel,它使用延伸主屏幕的类中的lisfield显示它,这使我的应用程序变得很慢。如何提高我的应用程序的速度?

任何人都可以建议我如何让它快速?

是否可以弹出加载屏幕并启动线程来联系webservice,获取xml,解析它并杀死线程,然后填充列表屏幕并显示它?

欢迎任何形式的建议!

+0

这通常是正确的做法,我不知道这是否是黑莓手机的做法。 –

+0

是否在开始解析之前获取整个xml?那会浪费时间。你在流中使用缓冲?这将有所帮助。不仅如此,可能需要看看你做了什么。 – MeBigFatGuy

+0

您可以在列表框上放置加载消息或动画覆盖图。 –

回答

0

在做其他事情之前找出哪个部分很慢。否则,你会浪费你很多时间在错误的部分。

为了做这种定时工作,我经常会做内部日志到一个StringBuilder中,或者也许只是进入一个ArrayList中存放原始的,未格式化的数据。测试结束后,我格式化并输出数据。这最大限度地减少了日志记录对时间的影响。

+0

感谢您的答复埃德staub,它需要大约10秒来打开应用程序..在大多数类似应用程序的时间是常见的,但我对使用一个单独的应用程序进行读取过程而不会影响主屏幕类别感到困惑。你可以发布一些例子吗? – ayachama

+0

@Newbie - 我不是故意暗示这种事。如果我理解你是正确的,那么缓慢是开放(初始化)应用程序 - 对吗?我的意思是暂时在应用程序中包含此超轻量级日志记录。打开时,它会转储/显示/写入磁盘日志(以方便的方式)。 –

+0

它是java-me,向量和字符串缓冲区,它们都需要同步,所以你不会得到相同的性能。您最好使用BB系统记录器或系统输出到控制台。 –

1

测试程序各个部分的速度。我通常使用的是System.nanoTime(),并在程序的每个部分之后找出时间的差异。

+0

谢谢你的回复simplyianm,我会这样做 – ayachama

+0

你会upvote我吗? :D –

+2

System.nanoTime()在J2ME中不可用。改为使用System.currentTimeMillis()。 – Jonathan

0

如果我错了,我只能这么原谅我 - 对我来说,只有在真正查看时才创建列表字段的项目似乎更有效。所以我会尽量在内存中保留只解析字符串,并只创建当前要显示的UI项目,丢弃不可见。为了使其更加流畅,您可以在当前页面前后扩展一个或多个页面。

这种方式显示的项目数量总是不变的。您也可以将分页添加到服务层,以限制一次性传送的记录数。

+0

感谢您的回复binary_runner,我的应用程序的第一页是listfield,它是一个新闻纸应用程序。 – ayachama