【问题标题】:Starting a View from a Service?从服务开始视图?
【发布时间】:2011-09-22 20:47:00
【问题描述】:

已经问过类似的问题,但运气不佳。

假设我有一个服务,我需要一个视图来弹出它。同时,它们都应该是难以处理的,即用户应该能够点击视图中的按钮,以及后台服务上的按钮。

这在理论上可行吗?如果是,我应该如何初始化该视图?

谢谢!

【问题讨论】:

  • 我不明白:在服务上方显示视图?服务在 android 中通常是不可见的(没有任何 UI)。也许您需要某种可定制的 Toast 功能。尝试编辑您的帖子并提供更多详细信息...

标签: android


【解决方案1】:

是的,这是可能的,您需要做的是调用WindowManager 服务并通过它添加您的视图。

WindowManager windowManager=(WindowManager)getSystemService(WINDOW_SERVICE);
LayoutInflater inflater=(LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
RelativeLayout layout=(RelativeLayout) inflater.inflate(R.layout.box,null);

您需要一个 WindowManager.LayoutParams 对象,该对象应包含布局参数

windowManager.addView(layout,params);

好吧,添加视图

【讨论】:

    【解决方案2】:

    您想要的是从正在运行的服务实例中添加一个视图。通过这种方式,您可以在所有活动中保留视图 - 以及从其他任何地方。看看这个很好的例子:

    http://www.piwai.info/chatheads-basics/

    【讨论】:

    • @slott 死链接 :(
    【解决方案3】:

    服务绝对可以有一个用户界面:输入法就是一个明显的例子。示例见http://developer.android.com/resources/samples/SoftKeyboard/index.html

    【讨论】:

    • 是的,我很确定这是可行的
    【解决方案4】:

    我猜你误用了“服务”这个词。 服务是不可见的,活动是可见的。

    服务中没有按钮!

    所以你别无选择!您应该将两个视图放在一个 Activity 中,我会使用 RelativeLayout 并将您的孩子的可见性设置为 GONE/Visible。

    http://developer.android.com/reference/android/widget/RelativeLayout.html

    同时使用弹出窗口并使其下方的布局可点击会打扰用户。您正在彻底改变用户体验。我强烈建议也让您的弹出窗口出现在初始布局的顶部/底部

    【讨论】:

    • 如果你绝对必须达到这个效果,我认为这是你最好的选择。让自己成为一个包含在您的活动主布局中的布局,看起来像一个弹出窗口,并在您希望它出现时让它可见。除此之外,没有办法让前景和背景按钮都可以点击。
    【解决方案5】:

    服务在后台运行,没有 UI。所以你不能在服务上显示一些东西。

    如果您需要服务来通知用户某事,请使用Notification

    你可以使用Toast,但我建议不要这样做,因为它可能会在另一个应用的活动上弹出,从而使用户感到困惑。

    【讨论】:

    • 向 WindowManager 添加视图怎么样?这不是反驳你的第一个说法吗?
    【解决方案6】:

    您想要的是 Activity 而不是 Service 和 Dialog 而不是 View。我建议您通过 google 阅读此文档:http://developer.android.com/guide/topics/fundamentals.html

    但是,要回答您关于两者都可以交互的问题。这是不可能的。在任何给定时间,只有 1 个活动位于活动堆栈的顶部。用户只能与该活动进行交互。如果您想要类似浮动窗口的东西,则必须自己创建它。虽然请记住,这违反了 android 设计原则。

    【讨论】:

      猜你喜欢
      • 2014-10-05
      • 1970-01-01
      • 2014-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多