【问题标题】:What type of thread method should I use for continuous work?我应该使用哪种类型的线程方法进行连续工作?
【发布时间】:2011-12-15 22:47:58
【问题描述】:

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

Android 也提供了一些类:

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

AsyncTask:可能是更好的候选者

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

任何想法/意见将不胜感激。 :)

编辑:

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

线程调用层次结构:

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

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

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

【问题讨论】:

  • 您可以在服务中创建线程,就像您可以从活动中创建线程一样。如果您使用服务,即使您的活动被终止,您的工作线程仍将继续工作。

标签: java android multithreading service android-asynctask


【解决方案1】:

我仍然不完全清楚您使用这些线程的目的。从标题上看,您似乎在做持续的工作,但在描述中,听起来有时您在做较小的离散工作。也不清楚这些类型的工作是否相关。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-10
    • 2021-09-06
    • 1970-01-01
    相关资源
    最近更新 更多