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