应用程序或前台服务的子类中的后台线程?

时间:2012-11-21 09:40:39

标签: android multithreading service

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

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

2 个答案:

答案 0 :(得分:1)

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

如果您需要教程,请参阅以下教程:

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

答案 1 :(得分:1)

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

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

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