如何处理 android 中服务的硬件后退按钮

how to handle hardware back button from a service in android

我正在编写一个客户端程序,其中我是 运行 服务器中用于通信的服务。 android 硬件后退按钮可以通过 OnKeyDown 方法或 activity 中的 OnBackPressed 方法控制。 但是它是如何通过服务完成的?

无法从服务中检测到硬件"BACK "。

如果您在前台有一个 activity,activity 可以检测到 BACK 按下。 在这种情况下,您的 Activity 从您的 activity 向您的服务发送 BACK Press。

Why it is so?

服务原则上,是为了在"Background"中执行长运行操作而开发的应用程序组件。请参阅 Android 文档中的以下引述:

A service does not provide a user interface. For example, a service might play music in the background while the user is in a different app, or it might fetch data over the network without blocking user interaction with an activity

"Back" 按下等操作是用户驱动的,因此与 Android 中的用户界面密切相关 Activity。

因此,Android 框架提供 API 与处理 "Back" 压力相关的 Activity 而不是使用服务。

几乎所有时间您的服务都不会在屏幕上显示它自己的 windows。因此服务将无法接收后退按钮点击事件。

您可能会阅读一些关于此的有趣讨论 LINK