2

我正在使用数据库来保存搜索表单的状态。我正在使用 onPause 方法来持久化数据并使用 onResume 方法来恢复它。我的观点是恢复和持久化状态应该是一个阻塞操作,所以我打算在 UI 线程上执行数据库操作。我知道这通常是不鼓励的,但操作应该很快,我认为如果它们是异步完成的,它们可能会导致不一致的 UI 行为。

任何建议

4

2 回答 2

3

即使您希望应用程序在执行慢速操作时不接受用户输入,您仍然不想在 UI 线程中执行它们。这有两个原因:

  1. 完全无响应的 UI 是一个很大的问题。如果您需要阻止您的用户与程序交互,您需要向他保证某些事情实际上正在发生 - 任何其他事情都可能被解释为您的应用程序有错误。在应用程序运行时,酌情使用对话框、toast 和/或进度条。
  2. Android 将为用户提供强制关闭它认为挂起的应用程序的选项。您不希望在您的应用程序发生正常行为期间发生这种情况。
于 2012-11-17T16:56:56.383 回答
0

即使您希望它是一个阻塞操作,您也必须向用户显示某些事情正在发生。因为当UI线程被阻塞时,屏幕不会响应用户的任何触摸操作。Sp,在持久化和恢复完成之前,您的和方法中可以有一个无限的进度条。显然,您将不得不在单独的线程中执行此操作。因为如果 UI 线程有一段时间没有响应,android 会给出错误。onPause()onResume()
Application Not Working

于 2012-11-17T16:46:51.570 回答