Android 服务的方法在不同线程中调用。它还在主线程上 运行 吗?

Android service's method called in different thread. Does it still run on the main thread?

如果我理解正确,Android Services,默认情况下,运行 在主 UI 线程上。 因此,对于任何非主线程操作,我发现有人建议在 Service.

中启动一个单独的线程

但是,我的问题是如果 Service 的方法在另一个线程中调用,即 AsyncTasknew Thread(...).start();Service 的方法 运行 在调用线程中?还是在主线程上 运行,据说 Service 是 运行ning?

换句话说,

new Thread(new Runnable() {

    @Overrde
    public void run() {
        myAndroidService.doSomething();
    }
}).start();

在这个新的 Thread 中会调用 MyAndroidService#doSomething() 吗?

方法总是运行在调用它的线程中。

一个方法实际上并不属于任何线程,所以是的,即使该方法是在您的服务中定义的,它将在 AsyncTask 线程中执行,而不是您的服务所在的主线程运行宁在.

是的,正如马丁上面提到的。

此外,您可以通过以下方式查看方法的线程信息:

private void doSomething(){
    Log.i(TAG, "I'm doing something in thread " + Thread.currentThread().toString());
}