我们有一个应用程序,在同步时我们会全屏显示进度。该屏幕上有一个动画图标和说明同步内容。 同步可能需要几分钟时间。
当用户随机点击全屏进度时,尽管应用程序未冻结且进度已正确更新,但应用程序仍会收到 ANR 消息。
有什么办法可以防止全屏进度显示时出现ANR吗?
注意:对于用户来说,同步数据时不可能使用,因为用户可以在应用程序中创建新数据并导致数据完整性失败。
编辑: 日志显示:
[split_config.arm64_v8a.apk!libe_sqlite3.so] sqlite3_exec
Input dispatching timed out
[split_config.arm64_v8a.apk!libe_sqlite3.so] sqlite3_step
Input dispatching timed out
Native method - android.os.MessageQueue.nativePollOnce
Input dispatching timed out
确实,我们正在将 EntityFramework 与 SQLite 2.2.6 一起使用,但我们坚持这一点,因为这是 .NET Standard 2.0 支持的最新版本
在同步时,同步操作不应该在UI线程中,通知UI线程进度,并显示当前进度。此时你的UI线程并没有被阻塞,不会导致ANR。