1

我有一个应用程序,允许用户在一个特定的活动屏幕上输入大量数据。如果用户出于某种原因突然离开此屏幕,我会将他们的数据保存到应用程序的 SQLite 数据库中。这个应用程序已经发布了将近 2 年,从未遇到过 ANR 超时,但在上个月我收到了 2 份市场报告。

在一种情况下,尝试关闭数据库时出现问题。在另一种情况下,尝试打开数据库时出现问题。我根本无法重现该问题,但我看到了正在执行的步骤的确切顺序,但我的问题是我不知道我可能会改变什么。两者都围绕保护数据库的互斥锁我自己不创建互斥锁,这是一个系统问题。

基本上,调用 onPause,打开数据库,将数据写入文件,然后关闭数据库。据我了解,如果您的数据不能仅存储在 SharedPreferences 中(我的数据不能存储),这是正确的处理方式。

我不明白为什么打开或关闭数据库需要这么长时间,那么我在这里有什么选择?我唯一的假设是这些问题是由使用该应用程序很长时间的用户引起的,因此他们的数据库文件变得非常大,并且可能会使系统锁定数据库文件的时间更长(我是只是在这里猜测)。

我想也许从 on​​Pause 开始一个 AsyncTask,但这似乎是错误的。有什么建议么?

4

0 回答 0