任务中的服务?或服务内的任务

Service inside a task? Or task inside a service

我正在开发一个 android 应用程序,我的团队中有更多人,该应用程序具有调用远程 api 的服务,您必须使用 Asynctask 在单独的线程中进行这些调用。

现在我必须创建一个新服务,并查看我的伙伴以前完成的服务,我看到他们中的一个实例化了服务并在服务内部创建了 AsyncTask,而另一个伙伴在内部实例化了服务异步任务。

所以我想知道,对此的最佳做法是什么?或者两种方式都正确并且每种方式都有特定的原因?

AsyncTask里面的Service好像很奇怪!

在服务或线程处理程序模式中使用 AsyncTasks 是最常见的,以确保您有 "background" 线程用于通信调用。

但是,如果您的服务任务只是执行对远程 API 的调用,然后将 return 结果返回给调用者,我强烈建议您查看 IntentService。不同之处在于 IntentService 不需要任何 AsyncTask 来实现这个 "background"(其他线程)事情。

检查 google 文档:http://developer.android.com/reference/android/app/IntentService.html

  1. 假设您说的是服务,它是 Android 组件的四分之一。服务只能由 Android 系统实例化。你不能在 AsyncTask 中实例化它。如果您通过 java new 关键字实例化服务,该实例就像正常的 Java class 一样执行,不受 android 系统的控制。
  2. 你可以在服务中启动一个AsyncTask,这是一个常见的设计。