0

Я использую WindowManager добавить вид на пользователей экране, используя в IntentService, как показано здесь:Android перекрывающихся просмотров при использовании WindowManager

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]

ответ

0

Когда служба заканчивается, вам необходимо удалить предыдущие представления в функции onDestroy().

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