我认为问题就是这样:是否可以从服务中设置当前活动的窗口参数?因此,在一个Activity中,您可以使用方法getWindow()
,从而可以从Activity更改窗口FLAG。现在我想从服务中调用此方法:
public class WindowService extends Service
{
public WindowService()
{
// get current activity
activity.getWindow().addFlag(FLAG);
}
// other stuff
}
答案 0 :(得分:1)
您不应该混合服务和活动。该服务不应该做任何UI。相反,正如其他人所建议的那样,服务应该向活动发送消息,活动可能会改变它的UI。 准备好服务运行但活动不运行的情况。通过广播它很简单,你发送一条消息,但没有人得到它,不需要测试活动是否正在运行。
答案 1 :(得分:0)
由于您未在活动上下文中操作,因此您需要一个句柄。使用广播接收器向您的收听活动发送消息,这是处理它的正确方法,或传递对活动的引用,如下所示:
void WindowService(Activity activityReference) {
activityReference.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
我建议使用BroadcastReceiver
。
答案 2 :(得分:0)
您也可以在没有任何Broadcast
的情况下执行此操作,您可以将Activity
与Service
绑定,以便与之通信。 (使用可用的三种机制中的任何一种 - 实施IBinder
,使用Messenger
或实施AIDL
),但有一点你应该记住你想要用活动的窗口做什么,你要去在Activity's Context
&的范围内做也来自UI
线程。