我正在使用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时的样子:
到多次调用IntentService时,会出现一个阴影,因为有太多的视图堆叠在一起:
答案 0 :(得分:0)
当服务结束时,您需要删除onDestroy()函数中的先前视图。
if(cardview!=null){
WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
windowManager.removeView(mView);
}