如果我没有理解错的话,默认情况下,Android Service
会在主 UI 线程上运行。
因此,为了使任何脱离主线程的操作正常工作,我发现人们建议在 Service
中启动一个单独的线程。
但是,我的问题是,如果 Service
的方法在另一个线程中被调用,即 AsyncTask
或 new Thread(...).start( );
,Service
的方法是否在调用线程中运行?或者它是否在主线程上运行,据推测 Service
正在其中运行?
换句话说,
new Thread(new Runnable() {
@Overrde
public void run() {
myAndroidService.doSomething();
}
}).start();
MyAndroidService#doSomething()
会在这个新的 Thread
中被调用吗?
最佳答案
方法总是在调用它的线程中运行。
一个方法实际上并不属于任何线程,所以是的,即使该方法是在您的服务中定义的,它将在 AsyncTask
线程中执行,而不是您的服务所在的主线程跑进来。
关于java - Android 服务的方法在不同的线程中调用。它仍然在主线程上运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30227914/