使用WindowManager

时间:2015-10-23 18:41:24

标签: android android-view intentservice android-windowmanager android-intentservice

我正在使用WindowManager使用IntentService将视图添加到用户屏幕,如下所示:

WindowManager.LayoutParams params = new WindowManager.LayoutParams(
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.TYPE_PHONE,
            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
            PixelFormat.TRANSLUCENT);

    params.gravity = Gravity.BOTTOM | Gravity.CENTER;
    params.x = 0;
    params.y = 100;
    windowManager.addView(cardView, params);

首次启动IntentService时,视图按预期创建。但是,当我重新启动IntentService时,会添加一个新视图,但前一个视图仍然存在。

如何在添加新视图之前删除我已添加的所有视图?我知道如果我杀死了IntentService,那么视图就会消失,但除了刚刚启动的实例之外,如何删除我的IntentService的所有其他实例?

这是我第一次调用IntentService时的样子: 2]

到多次调用IntentService时,会出现一个阴影,因为有太多的视图堆叠在一起: 1]

1 个答案:

答案 0 :(得分:0)

当服务结束时,您需要删除onDestroy()函数中的先前视图。

if(cardview!=null){
 WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
            windowManager.removeView(mView);
}