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

标签 java android multithreading service android-asynctask

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

Android 还提供了一些类:

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

AsyncTask:可能是更好的选择

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

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

编辑:

另外,为什么我想将我的普通线程更改为其他方法,因为 Android 会优先处理普通线程。

线程调用层次:

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

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

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

最佳答案

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

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

关于java - 我应该使用什么类型的线程方法来连续工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8527714/

相关文章:

java - 嵌入式 Jetty 中的 Web 应用程序出现错误 404 未找到

java - 更改 JMenuItem 上的 JPanel 单击(ActionListener 未触发)

java - 如何更改自定义字体文本大小?

c++ - 独立堆栈空间对线程的重要性

multithreading - Scala 中的异步 IO 与 future

javascript - 如何从 NetSuite 获取报告?

android - 在 Acer Iconia B1 上连接蓝牙时出错

android - 如果同一个android项目的两个android模块使用不同的支持库版本会发生什么?

java - QuickBlox 获取不在联系人中的用户的状态

c# - 新手 c# 线程如何处理在另一个线程上引发的事件