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

Rom*_*anP 8 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();

Run Code Online (Sandbox Code Playgroud)

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

提前致谢

aro*_*ero 7

你可以使用 IntentService

IntentService是服务的基类,可根据需要处理异步请求(表示为Intents).客户端通过startService(Intent)调用发送请求; 根据需要启动服务,使用工作线程依次处理每个Intent,并在工作失败时自行停止

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

  • 感谢您对此方案的快速回复.然而,我还有另一项服务,每隔200毫秒监控一次GPS,我不希望它减慢主线程的速度.由于此服务依赖于onLocationChanged被调用,我不希望它因意图服务而被杀死.我怎么运行这是一个单独的线程?或者这是一个单独的问题? (3认同)