AutoCompleteTextView:首先加载列表然后在客户端查询或通过异步调用更新它?
AutoCompleteTextView : Load list first then query on client or update it through Async Calls?
我有一个包含 AutoCompleteTextView 的 activity。
这个 AutoCompleteTextView 是一个包含成千上万个条目的列表。
有 2 种可能的解决方案:
1- 首先加载巨大的列表并填充 AutoCompleteTextView。
2- 当用户动态编写和更新 AutoCompleteTextView 适配器时异步调用。
除了 1 和 2 的明显缺点(1 中客户端的巨大负载和 2 中服务器的巨大负载)。处理这种情况时最优化的方案和考虑最多的方案是什么?
1- Load the huge list first and populate the AutoCompleteTextView.
最好是使用 SyncAdapter
加载数据 "outside" 应用程序并更新本地 SQLite 数据库,这样 AutoCompleteTextView
可以使用 CursorAdapter
获取数据。如果您的列表变化不大,这是一个不错的选择。但是,它要求维护本地数据库和使用 SyncAdapter
的所有复杂性,包括无人值守的身份验证,可能使用自定义身份验证器。
2- Async Calls when the user is writing and updating the AutoCompleteTextView adapter dynamically.
这就是我们在应用程序中所做的;我会推荐这种方法。这里有一些建议:
限制您在任何单个请求中发回的结果数量,比如大约 20 个。在我们的应用程序中,一些常见项目比其他项目更频繁地被请求,因此我们优先考虑结果以包括这些项目。无论如何,您的用户不会在列表中滚动太远;如果他们想要的项目不包括在内,他们可以输入另一个或两个字符来获得它。
在 AutoCompleteTextView
上放置一个计时器,这样用户必须在将请求发送到服务器之前停止输入 200-250 毫秒。这将有助于确保仅在必要时发送请求并减少服务器带宽。
我有一个包含 AutoCompleteTextView 的 activity。
这个 AutoCompleteTextView 是一个包含成千上万个条目的列表。
有 2 种可能的解决方案:
1- 首先加载巨大的列表并填充 AutoCompleteTextView。
2- 当用户动态编写和更新 AutoCompleteTextView 适配器时异步调用。
除了 1 和 2 的明显缺点(1 中客户端的巨大负载和 2 中服务器的巨大负载)。处理这种情况时最优化的方案和考虑最多的方案是什么?
1- Load the huge list first and populate the AutoCompleteTextView.
最好是使用 SyncAdapter
加载数据 "outside" 应用程序并更新本地 SQLite 数据库,这样 AutoCompleteTextView
可以使用 CursorAdapter
获取数据。如果您的列表变化不大,这是一个不错的选择。但是,它要求维护本地数据库和使用 SyncAdapter
的所有复杂性,包括无人值守的身份验证,可能使用自定义身份验证器。
2- Async Calls when the user is writing and updating the AutoCompleteTextView adapter dynamically.
这就是我们在应用程序中所做的;我会推荐这种方法。这里有一些建议:
限制您在任何单个请求中发回的结果数量,比如大约 20 个。在我们的应用程序中,一些常见项目比其他项目更频繁地被请求,因此我们优先考虑结果以包括这些项目。无论如何,您的用户不会在列表中滚动太远;如果他们想要的项目不包括在内,他们可以输入另一个或两个字符来获得它。
在
AutoCompleteTextView
上放置一个计时器,这样用户必须在将请求发送到服务器之前停止输入 200-250 毫秒。这将有助于确保仅在必要时发送请求并减少服务器带宽。