我正在用大量數據更新數據庫(SQLite),這需要幾分鐘的時間。我正在線程上執行此操作。同時,我想通過吐司來展示更新的進度(25%,50%等)。由於我在一個線程內,我需要使用runOnUiThread()函數來運行Toast。像這樣:在繁重的工作負載任務期間舉行內線程
getActivity().runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(getActivity(),"Updating the database...", Toast.LENGTH_SHORT).show();
}
});
當工作量不夠大時,它工作正常。現在,它根本沒有烤麪包。
我一直在尋找方法來爲敬酒的線程設置非常高的優先級,但沒有成功。也許我可以繞過使用一個線程爲第一位的祝酒?
謝謝你的見解!
編輯:其實,麪包爲工作,但所有的工作已經完成後顯示。我想通知給用戶的完整更新百分比,所以我需要在更新期間顯示敬酒,而不是之後。
我嘗試刪除工作量(沒有數據庫更新,只有Log.d裏面的for循環的東西添加到數據庫)。儘管在循環內調用runOnUiThread()
方法,但循環結束後仍會顯示吐司。
編輯2:我設法做我清理代碼,並開始新的後通緝。我發佈了以下用作答案的代碼。
這麼大的工作量的某些部分在主線程上執行? – Massimo
不,現在在主線程上沒有發生任何事情(只能聽按鈕點擊等等)。但是由於繁重的工作量,這些都沒有反應。 – Xema
你有沒有在運行功能上放置一個斷點,並確保你到達那裏?或者在runOnUIThread調用? –