W mojej usłudze dodam widok do WindowManager
z addView()
. Kiedy jestem gotowy, aby ukryć widok, zadzwonię pod numer removeView()
, używając odnośnika View
. Działa to świetnie - przez większość czasu.Śledzenie widoku dodanego do WindowManagera (brak funkcji findViewById()?)
Mam sporadyczne raporty dotyczące zamknięcia siły, które mówią, że widok nie jest dołączony do WindowManager
. To ma sens. Problem polega na tym, że usługa jest zabijana przez Androida, a kiedy nadszedł czas, aby ukryć widok, próbuje usunąć ViewView na niewłaściwym View
.
Próbowałem sprawdzić, czy widok ma wartość zerową, ale najwyraźniej nie ma go w tym momencie, to po prostu nie jest dołączony do WindowManager
. Wygląda na to, że jeśli odniesienie do Widoku zostanie utracone, nie ma możliwości ponownego dostępu do niego.
Jak uzyskać odpowiednik findViewById()
na samym WindowManager
? Czy usługa View
zostanie automatycznie usunięta z WindowManager
, jeśli moja usługa zostanie zatrzymana (zabita)? Czy istnieje sposób, w jaki mogę zapisać odniesienie do View
, więc jeśli usługa zostanie zatrzymana, nadal mogę usunąć później View
(staram się również unikać przeciekania View
)?
Wiem, że to stary, ale dlaczego interakcji z interfejsem użytkownika z usługi?!? – Dori
@Dori Chciałem przesłonić ekran połączenia przychodzącego, ale nie ma na to żadnego mechanizmu w Androidzie (do tej pory). Najlepszym rozwiązaniem jest pokazanie widoku ekranu połączenia przychodzącego, a działanie jest niewiarygodne. Usługa pozwala mi śledzić widok i ukrywać go, gdy nie jest już potrzebny. – Jesta