我有一个运行服务的非常简单的 Android GPS 记录应用程序。Activity 只不过是一个控制服务的启动/停止按钮。单击按钮后,我启动了一个新的后台服务(使用 START_STICKY)。然后我关闭Activity,服务正常运行。我可以再次运行该应用程序以停止服务。
该服务只是将 GPS 坐标记录到文件中。我正在登录每个方法和异常捕获。在某些时候,可能是几分钟或几小时,我的服务将停止,但不会调用 onDestroy 并且不会引发异常。日志只是显示我的最后一个文件写入工作,然后什么也没有。我怀疑 GC 正在杀死它,但我认为 START_STICKY 基本上意味着“请尽可能长时间地运行我”。30 秒后,服务的新副本启动(不同的 PID),onCreate 和 onStartService 照常调用。
如果/当它杀死它的父 Activity 或应用程序时,Android 会杀死一个服务吗?是否有必要在单独的线程中运行服务以防止这种情况?为什么整个服务生命周期不完整(不调用 onDestroy)?