Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.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_Android Asynctask - Fatal编程技术网

破坏Android应用程序上的服务强制关闭/崩溃

破坏Android应用程序上的服务强制关闭/崩溃,android,service,android-asynctask,Android,Service,Android Asynctask,当Android应用程序被强制关闭(System.exit(0))或崩溃时,后台运行的与之相关的服务不会被破坏。简单地说,不调用服务的onDestroy()方法。因此,当android应用程序重新启动时,服务会再次启动(立即调用其onCreate()。我想避免这种情况 因此,问题是: 在我无法访问其onDestroy()的情况下,如何销毁后台服务?如果您正在扩展一个普通的服务类,那么您所说的不会发生。我认为您正在为您的服务启动一个线程。如果是这种情况,请确保使用正确的intent调用stopSe

当Android应用程序被强制关闭(System.exit(0))或崩溃时,后台运行的与之相关的服务不会被破坏。简单地说,不调用服务的onDestroy()方法。因此,当android应用程序重新启动时,服务会再次启动(立即调用其onCreate()。我想避免这种情况

因此,问题是:


在我无法访问其onDestroy()的情况下,如何销毁后台服务?

如果您正在扩展一个普通的
服务
类,那么您所说的不会发生。我认为您正在为您的服务启动一个
线程。如果是这种情况,请确保使用正确的
intent
调用
stopService
,以关闭正在运行的
服务。我假设您的
服务
是一个
已启动的
服务类型,而不是
绑定的
类型。

请看这里是的,它是一个已启动的服务,并且正在实现一个connectionEvent侦听器。您告诉我“如果是这样,那么请确保您以正确的意图调用stopService以关闭正在运行的服务”,但我的应用程序正在强制关闭/崩溃。由于未调用服务的onDestroy,我应在何处调用“stopService”?首先修复强制关闭问题。如果您知道哪个活动导致强制关闭,那么您可以从该活动的onPause()或onStop()调用stopService。但是,你应该首先关注修复你的应用程序的强制关闭,imho。根据强制关闭,应用程序方面没有问题。假设有人使用应用程序杀手杀死所有正在运行的应用程序,在这种情况下,我希望服务自动销毁。如果我的应用程序被破坏了,那真的重要吗?无论如何,我的大约有20+个,我想建议你在活动的onDestroy()中发送一个广播,后台服务可以接收并停止self()并退出。如果你有一两项活动,那就太好了。对于20+来说,这不是一个很好的建议。请记住,当系统需要其他应用程序的资源时,它最终会终止您的服务。所以,你真的不必担心当你的应用程序被一些外部手段杀死时,后台服务会运行。当你重新启动你的应用程序时,只需检查它是否正在运行,而不是试图自动杀死它。