响应任务管理器的终止请求

发布于 2024-11-09 19:46:51 字数 542 浏览 0 评论 0原文

我的情况:
我创建了一个 Android 服务,该服务在应用程序启动时启动。该服务由一个简单的线程组成,该线程等待 5 秒,写入日志消息并再次等待。

关闭应用程序(使用后退按钮)后,Android 选择重新启动我的服务,因为我在 OnStartCommand 中返回 START_STICKY。 在调试应用程序时,我实际上可以使用DDMS来杀死进程。 Android再次选择重启服务。根据手册,这是预期的。

我还安装了一个任务管理器,并用它来“杀死”实例。有趣的是,现在我的服务不再重新启动。

有趣的是:无论哪种情况,都不会调用我的类的销毁代码。我的等待线程没有引发 InterruptedException。我的应用程序似乎无法知道它正在被破坏。

我的问题:
我该如何解决这个问题并响应终止请求?我已经注意到 DVM 缺少 sun.misc.Signal 和 sun.misc.SignalHandler 来进行正确的信号处理(如果任务杀手甚至使用了它们)。

我需要知道我的应用程序是否被破坏,以便我可以正确关闭文件句柄、数据库连接等。

非常感谢您的帮助。

My situation:
I have created an Android service, which is started when the app is started. The service consists of a simple Thread that waits for 5 seconds, writes a log message and waits again.

After closing the application (using the back button), Android chooses to restart my service , because I am returning START_STICKY in OnStartCommand.
When debugging the application, I can actually use DDMS to kill the process. Android again chooses to restart the service. This is expected as per the manual.

I also installed a task manager, and used that to "kill" the instance. Funky thing, is that now my service is no longer restarted.

The funky thing is this: in either case, no destroy code of my classes is called. No InterruptedException is raised on my waiting threads. There seems to be no way for my application to know it's being destroyed.

My question:
How can I get around this, and respond to kill requests? I already noticed that the DVM lacks sun.misc.Signal and sun.misc.SignalHandler for proper signal handling (if that's even being used by task killers).

I kind of need to know wether my app is being destroyed, so I can properly close file handles, database connections and the likes.

Many thanks for any assistance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我不会写诗 2024-11-16 19:46:52

我该如何解决这个问题并响应终止请求?

你不知道。 OTOH,这种任务杀手行为应该在 Android 2.2 中被消除,所以它最终不会成为问题。

How can I get around this, and respond to kill requests?

You don't. OTOH, this task killer behavior should have been eliminated in Android 2.2, so it eventually will not be a problem.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文