2011-04-23 62 views
7

我需要在单独的线程上运行服务。这是因为它访问的Web服务可能需要5-10秒,而我不想获得ANR。我也将对这项服务有约束力。我已经找到一种方法来在一个单独的线程的东西,如推出的服务:如何在单独的线程上运行服务?

Thread t = new Thread(new Runnable() { 

      public void run() { 
       //Launch and/or Bind to service here 
      } 
     }); 
     t.start(); 

不过,我相信这只有在服务本身在主线程中运行,运行在一个新的线程启动代码。那么我将如何在另一个线程中真正运行服务中的所有代码?

在此先感谢

回答

7

您可以使用IntentService

IntentService是 服务可处理上 需求异步 请求(表示为意图)的基类。客户通过 startService(意图)调用发送请求;根据需要 服务已启动,处理 每个意向依次使用工作者 线程,并且当它运行 失去工作

http://developer.android.com/reference/android/app/IntentService.html

+3

感谢您的快速回复,将这项工作停止本身场景。不过,我还有另一项服务,每200毫秒监测一次GPS,我不希望它减慢主线程速度。由于这个服务依赖onLocationChanged被调用,我不希望它被杀死,因为意图服务会。我将如何运行这是一个单独的线程?或者这会是一个单独的问题? – RomanP 2011-04-23 15:48:20

+0

拯救了我的一天..增加了知识服务vs IntentService ... – 2016-03-31 05:08:10

相关问题