【发布时间】:2010-11-30 21:47:02
【问题描述】:
我正在编写一个“实时”搜索数据库的应用程序。 即当用户按下字母时,它会更新搜索结果列表。
由于搜索可能需要一段时间,我需要在后台进行搜索并允许新的按键重新开始搜索。所以这是一个用户按下'a'(并且代码开始搜索“a”),然后按下'b' - 代码不会等待“a”搜索结束,然后开始搜索“ab”,而是停止“a”搜索,开始新的“ab”搜索。
- 为此,我决定在 AsyncTask 中进行搜索。这是一个明智的决定吗?
现在 - 每当检测到按键时,我都会测试是否有 AsyncTask 正在运行。如果我这样做 - 我会发出信号(使用 AsyncTask 中的布尔值)它应该停止。然后设置一个定时器,在 10 毫秒内重新测试 AsyncTask,看它是否终止,并开始新的搜索。
- 这是一种聪明的方法吗?还是您会采取其他方法?
TIA
【问题讨论】:
-
如果您从数据库中搜索,您将无法真正停止搜索。真的需要那么长时间吗?如果是,您可能不应该像那样实现动态搜索完成。
-
您可以运行的 AsyncTask 数量是有限制的。在早期版本的 android 上它很低。在最近的你可以忽略它。