Android后台工作场景

max*_*sap 0 service android

这是场景:

  1. 用户具有用于UI的主要活动.
  2. 程序需要与对等方通信并保持连接并等待消息
  3. 当消息出现时,它会显示在主要活动中.

所以问题是我应该使用服务进行通信以及提供什么类型的服务?

我是否应该在服务中使用AsyncTask以保持我的UI响应以及为什么?

Tre*_*hns 5

这里重要的是,任何CPU密集型工作或阻塞I/O(包括等待传入网络连接)都发生在与主UI线程分开的线程中.

如果您只需要网络通信以在活动活动期间保持运行,则在活动中使用第二个线程.如果您的活动被杀死后仍需要维护网络通信,则需要使用服务.

请记住,默认行为是服务与同一应用程序中的任何其他内容共享相同的进程和线程(包括提供UI的活动).因此,即使您使用服务,您仍然需要生成一个新线程才能获得所需的效果.

AsyncTask用于在单独的线程中执行任务,该线程最终将终止并返回结果.如果这听起来像您的应用程序,那么随意使用它.但是如果你在多个请求中保持一个端口打开(意味着你没有一个返回值),那么使用这个类只会是一种负担.