2011-09-29 33 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