从服务中启动视图?

时间:2011-09-22 20:47:01

标签: android

已经问了一个类似的问题,但没有太多运气。

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

enter image description here

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

谢谢!

6 个答案:

答案 0 :(得分:5)

是的,您需要做的就是致电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);

好吧,添加视图

答案 1 :(得分:4)

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

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

答案 2 :(得分:3)

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

答案 3 :(得分:2)

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

服务中没有按钮!

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

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

同样使用弹出窗口并使其下方的布局可点击将扰乱用户。您正在彻底改变用户体验。我强烈建议您将弹出窗口显示在初始布局的顶部/底部

答案 4 :(得分:1)

服务在后台运行,没有用户界面。因此,您无法在服务上显示某些内容。

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

Ayou可以使用Toast,但我建议不要使用它,因为它可能会混淆用户,因为它可以弹出其他应用的活动。

答案 5 :(得分:1)

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

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