Android Room查询无法在主线程上执行,通常我会从Activity中使用Handler或AsyncTask。但是,当需要在SyncAdapter中保留数据时,在不同的线程中执行Room查询的正确方法是什么? (我需要对REST API做一些请求并保留结果数据)。
目前我的方式是使用AsyncTask,但是文档说AsyncTask应该是短暂的,并且我在上下文泄漏方面遇到了一些麻烦。
await emptyS3Directory(process.env.S3_BUCKET, 'images/')
更新以澄清当前情况
我的SyncAdapter执行三项操作:
目前,当我需要使用房间访问本地数据库时,我使用AsyncTask,因此我没有收到错误消息,说我无法从主线程访问数据库。
但是我还必须使用retrofit2 enqueue查询或发布到REST Api,因此它在另一个线程中运行。代码变得一团糟,因为我只能在当前完成后调用下一步,并且在另一个内部创建一个线程,调试很痛苦。
是不是?我不应该使用其他线程选项吗?