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

Mau*_*ice 3 java service multithreading android

如果我理解正确,Service默认情况下,Android会在主UI线程上运行.因此,对于任何非主线程操作,我发现人们建议在一个单独的线程中启动Service.

但是,我的问题是,如果Service在另一个线程中调用了一个方法,即AsyncTask或者new Thread(...).start();,该Service方法是否在调用线程中运行?还是它在主线程Service上运行,据说它正在运行?

换一种说法,

new Thread(new Runnable() {

    @Overrde
    public void run() {
        myAndroidService.doSomething();
    }
}).start();
Run Code Online (Sandbox Code Playgroud)

MyAndroidService#doSomething()被称为这个新的Thread吗?

Mar*_*cny 6

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

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