Android - 如何在Activity关闭后服务继续运行?

syd*_*ydd 8 java multithreading android android-service

我对服务如何运作有点困惑,特别是这两件事:

来自http://developer.android.com/guide/topics/fundamentals/services.html:

当应用程序组件(例如活动)通过调用startService()启动它时,服务"启动".一旦启动,服务可以无限期地在后台运行,即使启动它的组件被销毁.

和:

警告:服务在其托管进程的主线程中运行 - 该服务不会创建自己的线程,也不会在单独的进程中运行(除非您另行指定).

我的问题:

  1. 如果主Activity线程退出,那么startService()启动的服务如何生存?或者只有那些服务在主Activity关闭时存活,这是在一个单独的线程中?

  2. 如何在单独的线程中启动服务?http://developer.android.com/guide/topics/fundamentals/services.html#ExtendingService上的dev doc 仅显示了在创建服务时如何生成线程的示例...而不是如何在服务中生成服务本身一个新线程...
    编辑:android:process=在manifest.xml中用于在一个单独的线程中启动它吗?(如果它在一个新进程中启动它,那么它必须在一个单独的线程中..)

Kir*_*ppa 6

引用你的话:

警告:服务在其托管进程的主线程中运行 - 该服务不会创建自己的线程,也不会在单独的进程中运行(除非您另行指定).

当主要活动关闭时,并不一定意味着托管进程退出.根据文档,该服务继续运行,因为该过程还活着!

检查一下

只要服务已启动或客户端绑定服务,Android系统就会尝试保持托管服务的进程.当内存不足并需要终止现有进程时,托管服务的进程的优先级将更高

所以只有当资源不足并且需要杀死周围的进程时,你的进程才会被杀死.其他.这个过程依然存在,你的服务也会如此.