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

Android使用后台线程将字符串数组加载到活动中,android,android-asynctask,intentservice,Android,Android Asynctask,Intentservice,我有一个活动,用户在EditText中输入一个值,然后搜索我在xml文件中定义的字符串数组以查找匹配项。每次用户更改文本时,我都会查找匹配项。启动此活动时,我将加载字符串数组资源 数组的加载和匹配查找是否应该发生在后台线程中 据我所知,我可以使用我熟悉的AsyncTask,也可以使用我没有经验的IntentService。IntentService?这种手术最理想的方法是什么 在某些情况下,可以使用异步任务或服务完成相同的任务,但通常一个任务比另一个任务更适合 AsyncTasks设计用于一次性

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

数组的加载和匹配查找是否应该发生在后台线程中


据我所知,我可以使用我熟悉的
AsyncTask
,也可以使用我没有经验的
IntentService
IntentService
?这种手术最理想的方法是什么

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

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

服务被设计为在后台持续运行。在上面按下按钮获取数据的示例中,您可以启动一个服务,让它获取数据,然后停止,但这是低效的。使用将运行一次、返回数据并完成的异步任务要快得多

但是,如果您需要在后台不断地做一些事情,那么服务是您最好的选择。例如播放音乐、不断检查新数据等


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

您应该使用
AutoCompleteTextView
ContentProvider
来实现。将字符串数组保存在数据库中,并通过
光标
访问它们,以弹出并显示在
自动完成文本视图
中。在.

AutoCompleteTextView中有一个例子看起来很有希望。当您说在数据库中存储字符串数组时,您的意思是像SQlite数据库一样吗?是的,将数据存储在SQlite数据库中。Android将为您完成自动完成,这将节省您大量的时间。