0

我正在开发一个通过 wifi 连接从外部设备收集数据的应用程序。我使用线程来完成这项工作,并将数据存储到数据库中。

将线程放在自定义应用程序类(作为单例管理)中是个好主意吗?或者如果我把它放在前台服务中会更好吗?

4

2 回答 2

1

使用 IntentService。IntentService 使用单独的后台线程,因此不会阻塞 UI 线程。即使您的所有活动都在后台,它仍然存在。AsyncTask 的问题在于,如果 Activity 终止,它就会终止。使用 IntentService,您的下载将愉快地运行,直到完成。

如果您确实了解Android 线程并且您感觉很舒服,那么您可以创建自己的线程。不过,我观察到使用 IntentService 要容易得多。唯一的缺点是 IntentService 线程不能被中断,但我怀疑大多数开发人员是否需要该功能。

要从 IntentService 与应用中的其他组件进行通信,请使用 LocalBroadcastReceiver。要与 UI“交流”,请使用通知。

于 2012-11-21T23:16:43.083 回答
1

您可以使用为此类内容构建的AsyncTask 。它不会阻塞您的 UI 线程,并且会在后台完成您的网络和存储。

如果您需要,这里有一个教程:

https://androidresearch.wordpress.com/2012/03/17/understanding-asynctask-once-and-forever/

于 2012-11-21T09:48:20.560 回答