簡體   English   中英

如何在Android上觸發並忘記SQLite數據庫插入?

[英]How to fire and forget a SQLite database insert on Android?

這種情況是我有一個僅追加的日記數據庫,並且定期將行插入其中。 這可以快速,完美地運行,但是我很好奇...

由於這些記錄不是絕對必要的,因此最好將其記錄為一發不可收拾 但是,我也想保持它的輕量級,這就是讓我認為AsyncTask原因(產生帶有各種處理程序和同步的新線程)。

您將如何實施呢?

更新:對於不熟悉“即發即棄”概念的用戶,這意味着盡快執行任務而不會阻塞並且忽略結果。

好吧,任何磁盤I / O都需要在后台線程上完成,以免凍結UI。 因此,您有幾種選擇:

  • 使用AsyncTask ,它維護線程池

  • 使用自己的線程池

  • 使用單線程,完成后將其丟棄

  • 使用IntentService ,如果您要批處理這些記錄並將它們插入大塊中,這可能會很有用,因為這可能花費足夠長的時間才能使服務值得

無論您使用哪種線程模型,都希望使用單例SQLiteDatabase (通常由單例SQLiteOpenHelper ,以便為您處理線程間同步。

最好的選擇是“輕量級”,而不是更改數據庫I / O本身,而是批處理記錄並將它們插入單個事務中。 這將比在它們出現時插入它們有效得多。 但是,這會增加數據丟失的幾率,因為在過程終止時,任何您未保留的內容都會變得很糟糕

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM