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

如何杀死android服务?

如何杀死android服务?,android,service,kill,Android,Service,Kill,我正在编写一个具有长期运行服务的应用程序 我在服务的ondestory方法中编写了一些状态保存代码 我的意图是,如果服务因为内存压力而被Android终止,应该调用这个函数 如何模拟服务被内存压力杀死 我已经尝试了adb shell am force stop com.example.app,但是没有调用服务的onDestroy方法 onDestroy是服务关闭状态保存的合理站点吗 如果是这样,我如何让Android调用服务的onDestroy,以进行调试/测试?如果您想以编程方式停止服务,请在

我正在编写一个具有长期运行服务的应用程序

我在服务的
ondestory
方法中编写了一些状态保存代码

我的意图是,如果服务因为内存压力而被Android终止,应该调用这个函数


如何模拟服务被内存压力杀死

我已经尝试了
adb shell am force stop com.example.app
,但是没有调用服务的
onDestroy
方法

onDestroy
是服务关闭状态保存的合理站点吗


如果是这样,我如何让Android调用服务的
onDestroy
,以进行调试/测试?

如果您想以编程方式停止
服务
,请在
服务
中调用
stopSelf()


或者转到应用程序设置并执行强制停止。

强制停止不会调用任何组件上的
onDestroy
,无论是服务还是活动。它完全关闭应用程序,无需进一步考虑


我不确定这一点,但如果您的服务不是作为前台服务运行的,您可以通过从“最近的应用程序”菜单中删除应用程序来关闭它。

您不应该依赖于
onDestroy()
,因为只有在服务正确停止时(通过调用
stopService()
stopSelf()
方法)才会调用它

如果您想保存服务状态,您应该在运行时保存它(例如,当播放/暂停功能激活时,播放器服务可以存储它),或者使用计时器定期保存它

若你们想对内存事件做出反应,你们应该使用类,当Android需要更多内存时,它会通知你们。如果您在这些回调中释放内存,您将增加服务在内存中停留时间更长的可能性


希望这有帮助

“如何模拟服务被内存压力杀死?”--服务永远不会“被内存压力杀死”。由于内存压力,整个进程终止。这是否会触发onDestroy()取决于环境因素。“我如何让Android调用服务的onDestroy?”——从测试套件中调用
stopService()
,用
Intent
标识您的服务。@commonware“是否触发onDestroy()取决于环境因素。”如果不总是调用
onDestroy
,我应该将状态保存代码定位到哪里?“如果onDestroy不总是被调用,那么我应该将状态保存代码定位到哪里?”——在状态发生变化时。我在这里看到了类似的解决方案——而且,我猜当应用程序崩溃时,不会执行任何方法,因此您可以在未捕获的异常中处理它。请参考此内容对不起,“应用程序设置”(Android 4.0.3)在哪里?您将如何卸载应用程序?通常会有一个专门用于此的屏幕,并有一个“强制停止”选项。我使用
adb shell pm uninstall com.example.app
,或google play来卸载应用程序。我还没有看到可以卸载手机应用程序的屏幕。找到了,谢谢-长按home按钮会弹出一个活动列表。Android会像@Commonware所说的那样不礼貌地终止服务。不礼貌的意思是不会调用onDestroy。