當我嘗試插入數據庫中的一些價值觀,我得到以下警告如何管理嚴格的政策警告,同時訪問數據庫
android.os.StrictMode$StrictModeDiskReadViolation: policy=2079 violation=2
探索在此之後,我才知道,
StrictMode最常用於捕獲應用程序主線程上的意外磁盤或網絡 訪問,其中UI操作接收到 併發生動畫。保持磁盤和網絡 操作關閉主線程進行的更加順暢
所以現在我使用的是Thread
,我也執行該數據庫中插入和刪除如下
new Thread(new Runnable() {
public void run() {
//insert data into database
}
}).start();
但問題每次都在某處或其他地方,我無法創建線程來執行小型小操作。 那麼是否有任何統一或通用的方式來執行此類數據庫任務? 此外,我是否需要跟蹤我創建的這個匿名線程?
我不知道關於'LinkedBlockingQueue'用'HandlerThread'所以是蠻好用的吧'Handler'和使用'SendMessage'發送數據時,只要我想執行插入或刪除數據庫? – Hunt
@Hunt:默認的'Handler'綁定到主應用程序線程,因此發送給它的消息在主應用程序線程上處理,這不是您想要的。一個'HandlerThread'是一個獨立的線程,帶有一個附加的'Handler',並且*'Handler'將在這個單獨的線程上處理它的消息。 – CommonsWare
你有任何它的例子嗎? 'LinkedBlockingQueue'或'HandlerThread' – Hunt