【发布时间】:2014-02-20 22:08:46
【问题描述】:
我对服务的运作方式有些困惑,尤其是这两件事:
来自http://developer.android.com/guide/topics/fundamentals/services.html:
当应用程序组件(例如活动)通过调用 startService() 启动服务时,服务被“启动”。一旦启动,服务可以无限期地在后台运行,即使启动它的组件被破坏。
和:
注意:服务在其宿主进程的主线程中运行——该服务不会创建自己的线程,也不会在单独的进程中运行(除非您另外指定)。
我的问题:
如果主 Activity 线程退出,由 startService() 启动的服务如何存活?还是只有那些服务在主 Activity 关闭后仍然存在,它们位于单独的线程中?
如何在单独的线程中启动服务? http://developer.android.com/guide/topics/fundamentals/services.html#ExtendingService 的开发文档仅显示了如何在创建服务时生成线程的示例...而不是如何在新线程中生成服务本身...
编辑: manifest.xml 中的android:process=是否用于在单独的线程中启动它? (如果它在一个新进程中启动它,那么它必须在一个单独的线程中..)
【问题讨论】:
-
您能接受答案吗?谢谢
-
@Kiran 我会接受,如果我的第二个问题也得到了回答。请参阅我的编辑以猜测如何解决它。
-
通常你会产生线程来分配负载。但是Service本身的目的是在不干扰Activity的情况下执行一些繁重的操作。回答这个问题:“你能在单独的线程上启动一个活动吗?”。很可能,同样的答案也适用于服务
-
Service是Android平台的宏组件。线程是虚拟机的一个微观元素。服务可以产生线程并在其上下文中控制它们。
标签: java android multithreading android-service