如何在单独的线程上运行服务?

时间:2011-04-23 15:40:49

标签: android android-service

我需要在单独的线程上运行服务。这是因为它访问一个可能需要5-10秒的Web服务,我不想得到ANR。我也将对此服务具有约束力。我找到了一种在单独的线程中启动服务的方法,例如:

Thread t = new Thread(new Runnable() {

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

但是我相信这只会在新线程中运行启动代码,而服务本身在主线程中运行。那么我如何在另一个线程中实际运行服务中的所有代码?

提前致谢

1 个答案:

答案 0 :(得分:7)

您可以使用IntentService

  

IntentService是一个基类   处理异步的服务   请求(表示为Intents)   需求。客户端通过发送请求   startService(Intent)调用;该   服务根据需要启动,处理   每个Intent轮流使用一个worker   线程,并在运行时自行停止   失业

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