【问题标题】:pressing the back button on android through service通过服务按下android上的后退按钮
【发布时间】:2013-05-08 00:31:47
【问题描述】:

是否可以通过服务以编程方式按下 android 上的后退按钮?

我知道如果我在 Activity 中,我可以覆盖 onBackPressed() 方法,但我正在寻找一种适用于在后台运行的服务的解决方案。

【问题讨论】:

    标签: android button service back


    【解决方案1】:

    让服务直接更改 UI 不是一个好主意。您可以从服务发送广播。此时打开的任何活动都可以收听广播,然后决定采取适当的行动(在这种情况下关闭应用程序)。您可以从 Activity 模拟按键。

    【讨论】:

    • 问题是,我需要该服务来模拟背压,因为应用程序会尝试在特定情况下自动进行背压。使用活动是做到这一点的唯一方法吗?
    • 您可以通过stackoverflow.com/questions/4967178/… 中的 n0sferat0k 尝试此解决方案。我没有尝试过,也不会推荐这个。
    【解决方案2】:

    是否可以通过服务以编程方式按下 android 上的后退按钮?

    没有。

    我知道如果我在 Activity 中,我可以覆盖 onBackPressed() 方法,

    这与“以编程方式按下后退按钮”无关。

    我正在寻找一种适用于在后台运行的服务的解决方案。

    欢迎您的服务向您的活动发送消息,这会导致活动调用finish()。您可以对此类消息使用以下任何一种:

    • LocalBroadcastManager
    • 像 Otto 这样的事件总线
    • 定期直播Intent
    • Messenger

    但是,如果您期望自己能够攻击其他应用程序的活动,强制它们调用finish(),这是不可能的。

    【讨论】:

    • 一个名为 SideBar 的应用程序(在 Play 商店中)对返回键做出反应。它是一个前台服务,它添加一个视图作为系统覆盖,并在按下后退键时删除该视图。我想知道这是怎么做到的。
    • @Phat7:很好,但这与这个问题无关。随意提出一个新问题。
    • @CommonsWare:你能解释一下为什么我们不能在服务中执行返回按钮吗?
    • @user8430:你不能在任何地方“执行返回按钮”。
    • 谢谢,但是你有任何官方文件可以证明这一点
    猜你喜欢
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-02
    • 1970-01-01
    • 2013-02-11
    相关资源
    最近更新 更多