Android WorkManager 数据库不成比例

Android WorkManager DB out of proportion

我编写了一个定期从网络服务器请求数据的应用程序。我通常每隔几个小时就这样做一次,但由于错误,我请求每两分钟更新一次。这仍然不是一个不合理的频率。

但是,当我查看我的应用程序的存储大小时,我惊讶地发现它超过了 100 MB 的障碍。事实证明,应用程序本身并没有使用 space,而是使用大小为 103 MB 的 androidx.work.workdb 来管理作业。它基本上保留了大约一周的所有数据。

我知道,我可以用WorkManager.getInstance(context).pruneWork()手动清除队列,数据库又会变小,但是Android不应该自动剪枝吗?如果我每 10 秒就有一份工作怎么办?

作为高级说明,如果您每 10 秒有一个作业,您可能正在使用 WorkManager 来解决应该使用不同解决方案的问题。如果您确实打算使用 WorkManager,也许您应该考虑制作工作链或唯一工作。

正如 pruneWork (https://developer.android.com/reference/androidx/work/WorkManager#pruneWork()) 的文档所述,WorkManager p运行 会在合理的时间后工作,目前是完成后 7 天。这是为了让您观察完成的工人的状态。如果您更频繁地需要 运行,可以使用 pruneWork.