我的应用程序的线程、异步任务或 intentService?

Thread, Asynctask or intentService for my app?

我需要你对我的应用程序的意见。我正在开发一个通过蓝牙与收音机通信的应用程序。应用分为 3 个(滑动)tabs :

  1. 首先我设置了一个连接选项和一个“connect”按钮来将我的设备连接到收音机。

  2. 第二个有一张地图显示我的位置(无线电可以发送GPS字符串,我用我的算法解码它并获得经纬度)。

  3. 在第三个中有一个类似的蓝牙聊天选项,我可以用它 send/receive 简单的短信到收音机。

此应用程序必须留在 后台 并连接到收音机,并且它必须在通知区域显示(类似于短信)一个显示 "message received" 的图标。所以我希望你的意见来开发应用程序:我必须使用 thread/asynctask 进行连接,使用 thread/asynctask 进行连接消息的地图和意图服务或者您认为应该做什么?这是我的第一个后台应用程序,上个月我用 asynctask 实现了我的应用程序的一部分。

感谢您的帮助。

AsyncTask 当你必须在一个单独的线程上执行一个短暂的操作时应该使用 post 主线程上的最终结果 / UI 线程,这不是我相信你的应用程序的情况。

Service 应该用于执行长时间的 运行 任务,这些任务在后台发生并继续工作,而不管前台是否有 Activity。但是,Service 仍然在主线程上运行,这意味着如果您对此 Service 进行大量繁重的计算,它会减慢您的 UI(当 UI 存在)。

这将我们带到 IntentService,它在单独的线程 和[=32= 上执行长运行操作 ] 在后台工作,无论 Activity 是否存在。

所以 IntentService 可能是您想要平滑 UI 的情况下的最佳选择,但您也有独立于 UI 组件的后台工作应用程序(AsyncTask 不能这样做)。但是,您的工作已经完成,因为当您想要传输数据时,您仍然需要将 IntentServiceActivity 同步/绑定。