我需要在单独的线程上运行服务。这是因为它访问一个可能需要5-10秒的Web服务,我不想得到ANR。我也将对此服务具有约束力。我找到了一种在单独的线程中启动服务的方法,例如:
Thread t = new Thread(new Runnable() {
public void run() {
//Launch and/or Bind to service here
}
});
t.start();
但是我相信这只会在新线程中运行启动代码,而服务本身在主线程中运行。那么我如何在另一个线程中实际运行服务中的所有代码?
提前致谢
答案 0 :(得分:7)
您可以使用IntentService
IntentService是一个基类 处理异步的服务 请求(表示为Intents) 需求。客户端通过发送请求 startService(Intent)调用;该 服务根据需要启动,处理 每个Intent轮流使用一个worker 线程,并在运行时自行停止 失业
http://developer.android.com/reference/android/app/IntentService.html