我应该使用什么类型的线程方法来进行连续工作?

时间:2011-12-15 22:47:58

标签: java android multithreading service android-asynctask

我的应用程序目前正在使用普通线程来生成服务器,客户端甚至是交换WiFi网络并启动之前的线程。这些线程在后台运行并且对UI没有任何影响因此它是我正在寻找的东西,但问题是当我重新进入应用程序时,所有这些线程都被重新创建。是否有可能创建一个单例线程,可以在我们重新打开应用程序时控制它?

Android也提供了一些课程:

服务:但它使用的是UI线程......

AsyncTask :可能是更好的候选人

IntentService :有一个可以操作的工作线程?可能是上面最好的选择。

任何想法/意见都将受到高度赞赏。 :)

编辑:

另外,为什么我想将我的普通线程改为其他方法,因为Android会优先考虑普通线程被杀死。

线程调用层次结构:

MainActivity - > NetworkSwap (扫描,连接和交换WiFi网络的无限进程), ServerTCP (无限收听连接), ServerUDP (无限收听连接)

Networkswap - > ClientUDP (向serverUDP发送广播请求并结束)

ServerUDP - > ClientTCP (向serverTCP发送请求并结束)

1 个答案:

答案 0 :(得分:1)

我仍然不完全清楚你使用这些线程的是什么。从标题来看,你似乎正在进行正在进行的工作,但在描述中听起来有时候你会做较小的离散工作。还不清楚这些类型的工作是否相关。

也就是说,通过正在进行的工作,我会说要将您当前存在的线程移动到由常规服务管理,从而使生命周期独立于活动,并且可以进行持续的后台工作。对于较小的离散工作块,IntentService是更好的匹配。如果你有这两种类型的工作并且它们不是很相关,你甚至可以考虑使用这两种类型的服务(听起来你有多个线程)。