问题描述
|
我的情况:
我已经创建了一个Android服务,该服务会在应用启动时启动。该服务由一个简单的线程组成,该线程等待5秒钟,写入一条日志消息,然后再次等待。
关闭应用程序后(使用“后退”按钮),Android选择重新启动我的服务,因为我在OnStartCommand中返回了START_STICKY。
在调试应用程序时,我实际上可以使用DDMS杀死该进程。 Android再次选择重新启动服务。根据手册,这是预期的。
我还安装了一个任务管理器,并使用它“杀死”了实例。奇怪的是,现在我的服务不再重启。
时髦的是:无论哪种情况,都不会调用我的类的销毁代码。我的等待线程上没有引发InterruptedException。我的应用程序似乎无法得知它已被销毁。
我的问题:
我该如何解决这个问题并响应杀死请求?我已经注意到DVM缺少sun.misc.Signal和sun.misc.SignalHandler来进行适当的信号处理(如果任务杀手甚至正在使用它)。
我有点需要知道我的应用程序是否已被销毁,因此我可以适当地关闭文件句柄,数据库连接等。
非常感谢您的协助。
解决方法
我该如何解决这个问题并响应杀死请求?
你不知道OTOH,此任务杀手行为应已在Android 2.2中消除,因此最终不会出现问题。