我的应用程序应该使用线程、异步任务还是IntentService?

4
我需要您对我的应用程序提出意见。我正在开发一款通过蓝牙与收音机通信的应用程序。该应用程序分为三个(滑动)选项卡:
  1. 在第一个选项卡中,我提供了一个连接选项和一个“连接”按钮,以将我的设备连接到收音机。

  2. 在第二个选项卡中,有一个地图显示我的位置(收音机可以发送GPS字符串,我使用自己的算法解码后获得纬度和经度)。

  3. 在第三个选项卡中,有一个类似于蓝牙聊天的选项,可以向收音机发送/接收简单的文本消息。

此应用程序必须保持在后台并连接到收音机,并且必须在通知区域显示一个图标,类似于短信,显示“收到消息”。因此,我想知道您的意见来开发应用程序:我是否需要使用线程/异步任务进行连接、使用线程/异步任务进行地图操作,并使用intentservice处理消息?或者您认为应该采取什么措施?这是我第一次开发后台应用程序,上个月我使用asynctask实现了我的应用程序的一部分。
谢谢您的帮助。

他们在SDK中有一个蓝牙聊天示例,你可以以此为基础开发你的应用程序。 - Alexander Kulyakhtin
1个回答

1

AsyncTask应该在你需要在单独的线程上执行短暂操作并将最终结果发布到主/ UI线程时使用,但我认为这不适用于你的应用程序。

Service应该用于执行长时间运行的任务,无论前台是否有Activity,它都会在后台继续工作。然而,Service仍在主线程上运行,这意味着如果你在这个Service上进行了大量的重计算,它会减慢你的UI(当UI存在时)。

这就带我们来到IntentService,它在单独的线程上执行长时间运行的操作并且在后台工作,无论是否存在Activity

因此,在您想要平滑的UI但同时又有独立于应用程序UI组件的后台工作时,IntentService可能是最好的选择(AsyncTask无法做到这一点)。但是,您仍然需要努力进行工作,因为当您想要传输数据时,仍需要同步/绑定IntentServiceActivity


我不明白一件事:我如何从三个类中调用同一个IntentService?我不知道如何管理介绍、地图和消息。 - ste9206
你会有一个包含三个选项卡的单一“Activity”,对吧?因此,你的“IntentService”只需与这一个“Activity”通信 :) - Yash Sampat
一旦数据在“Activity”中,它可以轻松地与“Fragment”共享...做一些研究,你就会学会如何 :) - Yash Sampat
有多种方法可以让 IntentServiceActivity 进行通信,只需进行一些研究...如果您觉得使用 3 个 IntentService 更容易,那么您可以这样做 :) - Yash Sampat
抱歉,可以使用两个IntentService,一个用于连接,一个用于消息,还有一个异步任务用于地图吗? - ste9206
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接