2010-10-25 24 views
0

我有一個程序可以從服務器獲取消息並將其存儲在本地。如果消息標題(而不是消息本身)存在本地,則程序會在顯示彈出窗口並下載消息時下載消息,如果用戶想要中止下載,則會下載「取消」按鈕。在BlackBerry上與PopupScreen或對話框同步運行代碼

在BlackBerry API中,似乎沒有辦法用彈出窗口或對話框優雅地運行某些東西 - 優雅地意味着可以運行一個方法,一旦方法結束,彈出窗口關閉。

我已經瀏覽了BlackBerry API,但找不到任何東西。

回答

1

您的代碼獲取消息正文的時間相對較長,因此它不應該與UI事件鎖定一起運行 - 如果確實如此,取消按鈕將不起作用,BlackBerry OS會終止您的應用程序,因爲它會停止在下載的同時響應UI事件。

因此,您使用Thread在單獨的線程上運行下載代碼。您在向用戶展示對話的同時啓動線程。要在線程完成時關閉對話框,您需要在操作開始時從線程中使用Application .invokeLater(...)。 invokeLater()調用可以關閉對話框並允許應用程序繼續。至於「取消」按鈕,您需要設置一些取消位,並且偶爾單獨檢查線程,然後退出。