我有一个活动,用户在EditText
中输入一个值,然后搜索我在xml文件中定义的字符串数组以进行匹配。每次用户更改文本时,我都会查找匹配项。当我开始这个活动时,我加载了字符串数组资源。
是否应该在后台线程中加载数组和匹配结果?
根据我的理解,我可以使用我熟悉的AsyncTask
或我没有经验的IntentService
。 IntentService
会过度杀伤吗?什么是这个操作的理想选择?
答案 0 :(得分:0)
在某些情况下,可以使用AsyncTask或Service完成相同的任务,但通常一个任务比另一个更适合任务。
AsyncTasks专为无法运行UI线程的一次性耗时任务而设计。一个常见的例子是在按下按钮时获取/处理数据。
服务旨在持续在后台运行。在上面按下按钮时获取数据的示例中,您可以启动服务,让它获取数据,然后停止它,但这是低效的。使用一次运行AsyncTask,返回数据并完成的速度要快得多。
如果您需要在后台继续做某事,那么服务是您最好的选择。这方面的例子包括播放音乐,不断检查新数据等。
在大多数情况下,即使您的应用程序的活动未打开,服务也适用于您希望运行代码的时间。 AsyncTasks旨在使UI线程执行代码非常简单。
答案 1 :(得分:0)
您应该使用AutoCompleteTextView
和ContentProvider
来执行您的实施。将您的字符串数组保存在数据库中并通过Cursor
访问它们以弹出并显示在AutoCompleteTextView
中。 official document中有一个示例。