已经问了一个类似的问题,但没有太多运气。
假设我有一个服务,我需要一个视图弹出它。同时,它们都应该是难以处理的,即用户应该能够同时单击视图中的按钮以及后台服务中的按钮。
这在理论上是否可行?如果是,我应该如何初始化该视图?
谢谢!
答案 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)
您想要的是从正在运行的服务实例添加视图。通过这种方式,您可以跨所有活动 - 以及其他任何活动 - 持久保存视图。看到这个很好的例子:
答案 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设计原则。