Java 安卓服务&x27;在不同的线程中调用的方法。它仍然在主线程上运行吗?
如果我理解正确,AndroidJava 安卓服务&x27;在不同的线程中调用的方法。它仍然在主线程上运行吗?,java,android,multithreading,service,Java,Android,Multithreading,Service,如果我理解正确,AndroidServices默认情况下在主UI线程上运行。 因此,对于任何脱离主线程的操作,我发现有人建议在服务中启动一个单独的线程 但是,我的问题是,是否在另一个线程中调用了服务的方法,即异步任务或新线程(…).start(),服务的方法是否在调用线程中运行?或者它是在主线程上运行的,应该是服务运行在哪个线程上 换句话说, new Thread(new Runnable() { @Overrde public void run() { myA
Service
s默认情况下在主UI线程上运行。
因此,对于任何脱离主线程的操作,我发现有人建议在服务中启动一个单独的线程
但是,我的问题是,是否在另一个线程中调用了服务
的方法,即异步任务
或新线程(…).start()
,服务的方法是否在调用线程中运行?或者它是在主线程上运行的,应该是服务运行在哪个线程上
换句话说,
new Thread(new Runnable() {
@Overrde
public void run() {
myAndroidService.doSomething();
}
}).start();
在这个新的线程中是否会调用MyAndroidService#doSomething()
?调用它的线程中始终会运行一个方法
方法并不真正属于任何线程,因此是的,即使该方法是在您的服务中定义的,它也将在AsyncTask
线程中执行,而不是在您的服务运行的主线程中执行。是的,正如Martin上文所述
此外,您还可以通过以下方式检查方法的线程信息:
private void doSomething(){
Log.i(TAG, "I'm doing something in thread " + Thread.currentThread().toString());
}
问了这个问题后,我觉得自己真的很笨,并为自己做了一个小测试。谢谢你的回答!这个问题真的很尴尬,但我想它应该留在网上,让其他可能偶然发现同样想法的人知道。这根本不是一个尴尬的问题。我记得很久以前也在想同样的事情:)