Android 可以在UI线程上执行DB操作吗?
我正在使用数据库来持久化搜索表单的状态。我使用onPause方法保存数据,使用onResume方法恢复数据。我的观点是,恢复和持久化状态应该是一个阻塞操作,所以我计划在UI线程上执行数据库操作。我知道这通常是不鼓励的,但是操作应该是快速的,我认为如果它们是异步完成的,可能会导致不一致的UI行为Android 可以在UI线程上执行DB操作吗?,android,sqlite,Android,Sqlite,我正在使用数据库来持久化搜索表单的状态。我使用onPause方法保存数据,使用onResume方法恢复数据。我的观点是,恢复和持久化状态应该是一个阻塞操作,所以我计划在UI线程上执行数据库操作。我知道这通常是不鼓励的,但是操作应该是快速的,我认为如果它们是异步完成的,可能会导致不一致的UI行为 任何建议即使您希望它是一个阻塞操作,也必须向用户显示正在发生某些事情。因为当UI线程被阻塞时,屏幕将不会响应用户的任何触摸操作。Sp,您可以在onPause()和onResume()方法中有一个无限进度条
任何建议即使您希望它是一个阻塞操作,也必须向用户显示正在发生某些事情。因为当UI线程被阻塞时,屏幕将不会响应用户的任何触摸操作。Sp,您可以在
onPause()
和onResume()
方法中有一个无限进度条,直到持久化和恢复完成<显然,您必须在单独的线程中执行此操作。因为如果UI线程有一段时间没有响应,android可能会给应用程序发出“不工作”错误。即使您希望应用程序在执行缓慢操作时不接受用户输入,您仍然不希望在UI线程中执行这些操作。这有两个原因:
完全无响应的UI是一个大问题。如果您需要将用户从与程序的交互中锁定出来,那么您需要向他保证实际发生了一些事情——其他任何事情都可能被解释为您的应用程序有缺陷。在应用程序运行时使用对话框、祝酒词和/或进度条(视情况而定)
Android将为用户提供强制关闭其认为挂起的应用程序的选项。您不希望在应用程序的正常行为发生期间发生这种情况李>
“操作应该很快”——特别是在Android 1.x/2.x上,你无法控制它们是否“快”,因为这取决于其他正在运行的应用程序,也取决于你的应用程序。