2017-03-26 109 views
0

我的應用程序有一個相當大的數據庫,尤其是一個表 - 它有200萬個實體。在下一個應用程序版本中,我們正在做一個巨大的更新 - 刪除其中一列,並用另一個替換它。對於最大的桌子,這需要13秒。Android數據庫onUpgrade阻止UI線程

問題是,即使我已經把這個更新放在後臺線程中(仍然是在SQLLiteDatabase的onUpgrade方法中),它仍然會阻塞UI線程並導致android os彈出窗口出現 - 提示要麼殺死該應用程序或等待。 onUpgrade方法是否實際阻塞UI線程,或者我做錯了什麼?

+1

您的代碼中存在一個錯誤。請發佈後臺線程的設置和調用部分。 – laalto

回答

0

使用StrictMode API檢測UI線程阻塞的確切原因。

我會推薦你​​一個服務,並啓動這個數據庫升級,如果它將是一個巨大的,也提供一個加載屏幕,如果你不想立即看到用戶界面。

希望這會有所幫助。

0

實際上還有另一個阻塞UI線程的數據庫進程。我設法使用StrictMode API來識別問題。謝謝@albeee