Android使用后台线程将字符串数组加载到活动中

时间:2015-01-18 07:39:38

标签: android android-asynctask intentservice

我有一个活动,用户在EditText中输入一个值,然后搜索我在xml文件中定义的字符串数组以进行匹配。每次用户更改文本时,我都会查找匹配项。当我开始这个活动时,我加载了字符串数组资源。

是否应该在后台线程中加载数组和匹配结果?

根据我的理解,我可以使用我熟悉的AsyncTask或我没有经验的IntentServiceIntentService会过度杀伤吗?什么是这个操作的理想选择?

2 个答案:

答案 0 :(得分:0)

在某些情况下,可以使用AsyncTask或Service完成相同的任务,但通常一个任务比另一个更适合任务。

AsyncTasks专为无法运行UI线程的一次性耗时任务而设计。一个常见的例子是在按下按钮时获取/处理数据。

服务旨在持续在后台运行。在上面按下按钮时获取数据的示例中,您可以启动服务,让它获取数据,然后停止它,但这是低效的。使用一次运行AsyncTask,返回数据并完成的速度要快得多。

如果您需要在后台继续做某事,那么服务是您最好的选择。这方面的例子包括播放音乐,不断检查新数据等。

在大多数情况下,即使您的应用程序的活动未打开,服务也适用于您希望运行代码的时间。 AsyncTasks旨在使UI线程执行代码非常简单。

答案 1 :(得分:0)

您应该使用AutoCompleteTextViewContentProvider来执行您的实施。将您的字符串数组保存在数据库中并通过Cursor访问它们以弹出并显示在AutoCompleteTextView中。 official document中有一个示例。