Android 在单独进程中对 运行 的意图服务不会自行停止
Android Intent Service to run in separate process does not stop itself
我创建了一个 intent 服务,可以下载一些文件,将其中一些写入外部存储,并将一些数据写入我应用程序的本地数据库
它工作正常,直到我意识到意图服务 运行 在我的应用程序的同一进程中。
我希望即使应用程序进程终止,服务也能完成它的工作。我注意到如果我终止我的进程,意图服务也会终止并且不会执行任务。
所以我读到我可以 运行 我在这里完成的单独流程中的意图服务
<service
android:name=".services.DownloadContentIntentService"
android:process=":whatever"
android:exported="false" />
现在任务 运行 在一个单独的进程中。如果我终止正在运行的应用程序,它仍然 运行s。
但是,我注意到任务完成后,意图服务不会自行终止。
即使我调用 stopSelf()。根据 Android Studio 的说法,它还活着。
发生了什么事?
感谢您的阅读。
Android 本质上是基于 Linux 的,因此应始终在该上下文中查看流程。现在,Service
由 Android 提供,但沙箱由 Linux 提供。而且,事情变得更加复杂,因为图片中还有JAVA,虚拟机使事情更加丰富。 stopSelf()
由服务执行并不意味着包含该服务的进程已被终止。要终止进程,您需要执行 SIGKILL
又名 kill -9
因此,即使服务已向 Android 发出 stopSelf()
的信号,Linux 仍可能决定让进程保持活动状态,尤其是因为在终止进程之前,资源需要GC。因此,stopSelf()
绝不等同于 SIGKILL
,这实际上意味着您无法在 PS
列表(或 Android 的进程列表)中看到该服务) 立即
我创建了一个 intent 服务,可以下载一些文件,将其中一些写入外部存储,并将一些数据写入我应用程序的本地数据库
它工作正常,直到我意识到意图服务 运行 在我的应用程序的同一进程中。
我希望即使应用程序进程终止,服务也能完成它的工作。我注意到如果我终止我的进程,意图服务也会终止并且不会执行任务。
所以我读到我可以 运行 我在这里完成的单独流程中的意图服务
<service
android:name=".services.DownloadContentIntentService"
android:process=":whatever"
android:exported="false" />
现在任务 运行 在一个单独的进程中。如果我终止正在运行的应用程序,它仍然 运行s。
但是,我注意到任务完成后,意图服务不会自行终止。
即使我调用 stopSelf()。根据 Android Studio 的说法,它还活着。
发生了什么事?
感谢您的阅读。
Android 本质上是基于 Linux 的,因此应始终在该上下文中查看流程。现在,Service
由 Android 提供,但沙箱由 Linux 提供。而且,事情变得更加复杂,因为图片中还有JAVA,虚拟机使事情更加丰富。 stopSelf()
由服务执行并不意味着包含该服务的进程已被终止。要终止进程,您需要执行 SIGKILL
又名 kill -9
因此,即使服务已向 Android 发出 stopSelf()
的信号,Linux 仍可能决定让进程保持活动状态,尤其是因为在终止进程之前,资源需要GC。因此,stopSelf()
绝不等同于 SIGKILL
,这实际上意味着您无法在 PS
列表(或 Android 的进程列表)中看到该服务) 立即