从服务中的活动更改窗口参数

时间:2014-01-10 14:45:05

标签: android android-activity android-service

我认为问题就是这样:是否可以从服务中设置当前活动的窗口参数?因此,在一个Activity中,您可以使用方法getWindow(),从而可以从Activity更改窗口FLAG。现在我想从服务中调用此方法:

public class WindowService extends Service
{
    public WindowService()
    {
        // get current activity
        activity.getWindow().addFlag(FLAG);
    }

    // other stuff
}

3 个答案:

答案 0 :(得分:1)

您不应该混合服务和活动。该服务不应该做任何UI。相反,正如其他人所建议的那样,服务应该向活动发送消息,活动可能会改变它的UI。 准备好服务运行但活动不运行的情况。通过广播它很简单,你发送一条消息,但没有人得到它,不需要测试活动是否正在运行。

答案 1 :(得分:0)

由于您未在活动上下文中操作,因此您需要一个句柄。使用广播接收器向您的收听活动发送消息,这是处理它的正确方法,或传递对活动的引用,如下所示:

void WindowService(Activity activityReference) {
    activityReference.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
}

我建议使用BroadcastReceiver

答案 2 :(得分:0)

您也可以在没有任何Broadcast的情况下执行此操作,您可以将ActivityService绑定,以便与之通信。 (使用可用的三种机制中的任何一种 - 实施IBinder,使用Messenger或实施AIDL),但有一点你应该记住你想要用活动的窗口做什么,你要去在Activity's Context&的范围内做也来自UI线程。