1

我有一个具有长期运行服务的 Android 应用程序。

线程(Android 在其中调用服务的方法)是否与 Android 用于调用应用程序方法(用于活动等)的线程相同?

如果是这样,在某处可以保证吗?

4

1 回答 1

1

根据android文档:

服务在其宿主进程的主线程中运行——该服务不会创建自己的线程,也不会在单独的进程中运行(除非您另外指定)。这意味着,如果您的服务要执行任何 CPU 密集型工作或阻塞操作(例如 MP3 播放或网络),您应该在服务中创建一个新线程来完成这项工作。通过使用单独的线程,您将降低应用程序无响应 (ANR) 错误的风险,并且应用程序的主线程可以保持专用于用户与您的活动的交互。

要在单独的线程中处理服务请求,您需要直接操作线程。或者您可以扩展IntentService

您也可以在单独的进程中启动服务。为此,您需要在清单中声明它:

<service
  android:name="WordService"
  android:process=":my_process" 
  android:icon="@drawable/icon"
  android:label="@string/service_name"
  >
</service> 

你可以在这里找到更多信息:http: //developer.android.com/guide/components/services.html

于 2015-08-19T06:57:47.567 回答