在Android文档中,它表示服务在主线程中运行。
如果我在一个单独的线程中启动我的服务会怎样?它仍然在主线程上运行吗?
我不是在清单文件中使用android:process
,而是在说:
Thread thread = new Thread(new Runnable() {
public void run() {
// Start service
}
}).start();
别担心,我不会那样做,我只是好奇。
答案 0 :(得分:3)
startService()
在主线程中启动服务(与启动Activity或任何其他组件相同)。无论你从哪个线程调用startService()
。
来源:http://developer.android.com/reference/android/app/Service.html
“当实际创建服务组件时,由于上述任何一个原因,系统实际执行的所有操作都是实例化组件并在主线程上调用其onCreate()和任何其他适当的回调。”
答案 1 :(得分:0)
文档说默认情况下服务甚至与多线程无关:
服务在其托管进程的主线程中运行 - 该服务 没有创建自己的线程...
您可以在此处阅读:http://developer.android.com/guide/components/services.html
您的代码所执行的操作与从主线程以外的线程调用View的函数非常相似。系统不允许你这样做。抛出异常。
答案 2 :(得分:-1)
如果您要求好奇并且不需要任何代码:
首先,您必须了解流程与线程之间的区别(请参阅http://docs.oracle.com/javase/tutorial/essential/concurrency/procthread.html)
默认情况下,应用中的所有主题都会在应用的流程中触发。
服务本身是一个线程,所以没有理由从一个单独的线程启动它(你通常从主线程启动它,如onCreate
方法等。它默认在同一个进程中启动但你可以指定通过在声明中指定process
名称来单独处理它,如下所示:
http://developer.android.com/guide/topics/manifest/service-element.html