繁体   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