Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的Android服务正在突然停止,并创建了一个新的服务_Android_Service - Fatal编程技术网

我的Android服务正在突然停止,并创建了一个新的服务

我的Android服务正在突然停止,并创建了一个新的服务,android,service,Android,Service,我有一个非常简单的Android GPS日志应用程序,运行一项服务。该活动只不过是控制服务的启动/停止按钮。单击一个按钮,我就用start\u STICKY启动了一个新的后台服务。然后我关闭活动,服务正常运行。我可以再次运行应用程序以停止服务 该服务只是将GPS坐标记录到文件中。我正在登录每个方法和异常捕获。在某个时刻,可能是几分钟或几小时,我的服务将停止,但不会调用onDestroy,也不会引发异常。日志只是显示我上次写文件成功,然后什么都没有。我怀疑GC正在扼杀它,但我认为START_STI

我有一个非常简单的Android GPS日志应用程序,运行一项服务。该活动只不过是控制服务的启动/停止按钮。单击一个按钮,我就用start\u STICKY启动了一个新的后台服务。然后我关闭活动,服务正常运行。我可以再次运行应用程序以停止服务

该服务只是将GPS坐标记录到文件中。我正在登录每个方法和异常捕获。在某个时刻,可能是几分钟或几小时,我的服务将停止,但不会调用onDestroy,也不会引发异常。日志只是显示我上次写文件成功,然后什么都没有。我怀疑GC正在扼杀它,但我认为START_STICKY的基本意思是请尽可能长时间地运行我。30秒后,服务的一个新副本被启动,不同的PID、onCreate和onStartService像往常一样被调用


如果某个服务终止其父活动或应用程序,Android会终止该服务吗?是否有必要在单独的线程中运行服务以防止出现这种情况?为什么不调用完整服务生命周期not complete onDestroy?

服务实际上正在主线程中运行,如果您执行可能需要一些时间的工作,您应该创建一个新线程。如果您使用的是一个而不是常规服务,Android可以为您做到这一点


我应该补充一点,Android将杀死一个占用主线程超过5秒的进程。锁定主线程将导致ANR应用程序不响应,这可能是您在服务中遇到的情况。

当后台服务的父活动关闭时,Android不会终止后台服务。但当设备屏幕被锁定时,它会暂停后台作业。你的问题可能与此有关。当屏幕再次解锁时,服务将从离开的位置继续工作。

当屏幕锁定时,我的服务运行正常,因此我认为这不是问题所在。据我所知,服务不会暂停和恢复