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

标签 java android multithreading service

如果我没有理解错的话,默认情况下,Android Service 会在主 UI 线程上运行。 因此,为了使任何脱离主线程的操作正常工作,我发现人们建议在 Service 中启动一个单独的线程。

但是,我的问题是,如果 Service 的方法在另一个线程中被调用,即 AsyncTasknew 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/

相关文章:

java - 嵌入式 Jetty 通过表单例份验证提供静态内容

java - Jboss后台验证

java - Netbeans 的 Hibernate Unicode;为什么在db中保存为 "?????"

C# 从不同线程调用控制

java - 如何处理ExecutorService任务抛出的异常?

java - replaceAll 或 regex java 正斜杠

java - 将 UsbFile 转换为 Java 类型文件

Android,检测其他应用程序何时启动,然后销毁该应用程序

android - 如何设置相对于位图分辨率的文本大小?

python - 用线程 boost python