我是不是应该始终在 android 的单独线程中执行数据库操作?

Posted

技术标签:

【中文标题】我是不是应该始终在 android 的单独线程中执行数据库操作?【英文标题】:Should I always perform database operation in a separate thread in android?我是否应该始终在 android 的单独线程中执行数据库操作? 【发布时间】:2021-11-06 23:54:51 【问题描述】:

android 中执行 sqlite 数据库操作会降低我的应用程序的速度,但有什么好方法可以消除这种迟缓?我只是在单独的线程上执行数据库操作还是有其他更合适的方式?

【问题讨论】:

“我只是在单独的线程上执行数据库操作”——总是在后台线程上执行磁盘或网络 I/O。例如,Room 默认执行此规则。 【参考方案1】:

没错,你应该这样做。如果你使用 Room,它将对你有很大帮助,因为它支持 livedata/flow,你可以从你的片段中观看,它不会在主线程中执行数据库操作。

什么是房间: https://developer.android.com/training/data-storage/room

Google 代码实验室可助您一臂之力: https://developer.android.com/codelabs/android-room-with-a-view-kotlin#0

【讨论】:

感谢 henrique 的回答和资源

以上是关于我是不是应该始终在 android 的单独线程中执行数据库操作?的主要内容,如果未能解决你的问题,请参考以下文章

android开发之多线程实现方法概述

在 android 服务的单独线程中运行位置更新

Android:没有活动和线程的服务

UI线程或背景中的Android音乐播放器

AsyncTask原理

我应该始终使我的 java 代码线程安全,还是出于性能原因仅在需要时才这样做?