2012-09-24 76 views
0

我正在編寫一個android應用程序,其中我有1 按鈕和1 進度條作爲UI元素。我的應用程序的用戶界面被掛起

這個應用程序的主要目的是,當用戶按下這個按鈕,它創建一個包含在自定義格式的所有電話簿聯繫人數據庫,意味着我讀聯繫人數據庫,並操縱了我的要求。

因此,我正在使用SQLiteOpenHelper進行數據庫操作。我寫了一個方法下載電話簿()執行所有必需的操作。我寫了一個應用程序,當用戶按下按鈕時,我正在使進度條可見並調用此方法。

在這種情況下,UI點擊按鈕和顯示用力關閉一個對話框等待按鈕,15秒後後懸掛。

爲了避免這種情況,我嘗試了以下機制。

- >廣播按鈕點擊消息,並且呼叫的方法downloadPhonebook()。這裏沒有用,發生同樣的問題。

- >使用一個線程和AsyncTask來調用這個方法,在這裏我得到了運行時異常,如無法在一個線程內創建Handler,Looper.prepare不叫。我試着調用Looper.prepare()和Looper.loop(),甚至發生異常。

- >我試圖與Android服務和廣播的意圖,又同樣的問題UI忌用。

如果有人遇到這個問題,或者知道溶液或知道如何使用Looper.prepare和Looper.loop請回復我。謝謝。

+0

您可以發佈您的代碼? – Araw

回答

0

的工作流程應該是這樣的:在主類中創建一個處理程序,在您的SQL助手類添加一個處理程序,在創建它的主類傳遞處理程序到SQL輔助類。在下載準備就緒後,從您的主課程的單獨線程運行下載,請致電yourHandler.sendEmptyMessage(0)。你應該在主類中覆蓋Handler.handleMessage(我不確定方法的確切名稱)。您也可以發送郵件到更新進度,瞭解Andoid Handler瞭解更多信息

+0

我的應用程序的SQL部分沒有錯。它正在按需要做,即使我從接收器調用阻塞方法,問題也被UI掛起。 –

+0

我只是說從你的主類(它將等待消息)傳遞一個處理程序,並且調用從另一個線程發送消息。 – mihail

+0

我在一個服務中試過這個,在收件人收到按鈕點擊消息後,我將其發送給Handler,在那裏我打電話給我的方法。在這裏,我也遇到UI掛起問題。 –

相關問題