Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 安卓服务&x27;在不同的线程中调用的方法。它仍然在主线程上运行吗?_Java_Android_Multithreading_Service - Fatal编程技术网

Java 安卓服务&x27;在不同的线程中调用的方法。它仍然在主线程上运行吗?

Java 安卓服务&x27;在不同的线程中调用的方法。它仍然在主线程上运行吗?,java,android,multithreading,service,Java,Android,Multithreading,Service,如果我理解正确,AndroidServices默认情况下在主UI线程上运行。 因此,对于任何脱离主线程的操作,我发现有人建议在服务中启动一个单独的线程 但是,我的问题是,是否在另一个线程中调用了服务的方法,即异步任务或新线程(…).start(),服务的方法是否在调用线程中运行?或者它是在主线程上运行的,应该是服务运行在哪个线程上 换句话说, new Thread(new Runnable() { @Overrde public void run() { myA

如果我理解正确,Android
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());
}

问了这个问题后,我觉得自己真的很笨,并为自己做了一个小测试。谢谢你的回答!这个问题真的很尴尬,但我想它应该留在网上,让其他可能偶然发现同样想法的人知道。这根本不是一个尴尬的问题。我记得很久以前也在想同样的事情:)