Android 服务的方法在不同线程中调用。它还在主线程上 运行 吗?
Android service's method called in different thread. Does it still run on the main thread?
如果我理解正确,Android Service
s,默认情况下,运行 在主 UI 线程上。
因此,对于任何非主线程操作,我发现有人建议在 Service
.
中启动一个单独的线程
但是,我的问题是如果 Service
的方法在另一个线程中调用,即 AsyncTask
或 new 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());
}
如果我理解正确,Android Service
s,默认情况下,运行 在主 UI 线程上。
因此,对于任何非主线程操作,我发现有人建议在 Service
.
但是,我的问题是如果 Service
的方法在另一个线程中调用,即 AsyncTask
或 new 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());
}