2016-11-17 27 views
24

Używam metody onTaskRemoved() w usłudze, aby wykryć, kiedy aplikacja została usunięta z listy urządzeń OSTATNIO, przesuwając ją. Przygotowuję niektóre dzienniki i niektóre inne operacje, które muszą się odbyć, gdy tak się stanie. Działa doskonale.Funkcja onTaskRemoved() nie jest wywoływana w urządzeniach HUAWEI i XIOMI

Następnie sprawdziłem tę metodę na urządzeniu HUAWEI z systemem Android 6.0. Metoda nigdy nie zostanie wywołana. Dodałem również wywołanie Log.d i zgodnie z oczekiwaniami ten dziennik nigdy się nie pojawił. To samo dzieje się na urządzeniu XIOMI.

Wszelkie pomysły, dlaczego tak się dzieje i jak rozwiązać ten problem? Czy istnieje inny sposób na wykrycie aplikacji usuniętej z listy RECENT bez polegania na onTaskRemoved()?

Dzięki

Odpowiedz

8

Kiedy użytkownik zainstalował aplikację na urządzeniu Xiaomi, przekierować użytkownika do aktywności Automatyczny start i powiedzieć użytkownikowi włączać:

if (Build.BRAND.equalsIgnoreCase("xiaomi")) { 
       Intent intent = new Intent(); 
       intent.setComponent(new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity")); 
       startActivity(intent); 
      } 

Użyj powyższego kodu, aby uruchomić stronę aktywności autostartu na Xiaomi

+0

Dziękuję, w połączeniu z odpowiedzią Davida Wassera udało mi się rozwiązać ten problem. Wyjaśniam użytkownikowi, że musi ręcznie aktywować tę funkcję systemu, a następnie mogę wysłać go na odpowiedni ekran Ustawienia. –

+0

Ja też utknąłem w tym proszę poprowadzić mnie, powyższe rozwiązanie, gdzie musimy umieścić i więcej na urządzeniu HUAWEI, co musimy zrobić? –

16

W przypadku niektórych urządzeń (niektóre LG, Huawei, Xiaomi i inne) potrzebuje aplikacja zostać ręcznie dodany do listy „chronionych aplikacji” lub „Aplikacje, które są dopuszczone do pracy w tle” aby Android uruchomił ponownie usługi STICKY. Jeśli Twoja aplikacja nie została ręcznie dodana do tej listy, Android zabija tylko Twoje procesy i nie uruchamia ponownie, a także nie wywołuje onTaskRemoved(). Odbywa się to w celu zachowania żywotności baterii poprzez ograniczenie liczby aplikacji, które mogą mieć uruchomione usługi STICKY w tle.

Na takich urządzeniach powinieneś zobaczyć stronę w "Ustawieniach", czasami pod "zarządzaniem energią", czasami w innych miejscach, gdzie musisz jawnie dodać swoją aplikację. Musisz też poinformować użytkowników, aby wyraźnie dodali Twoją aplikację do tej listy.

+0

Czy jest jakikolwiek sposób na skuteczne umieszczenie aplikacji na takiej liście? Czy istnieje jakakolwiek opcja do zrobienia w manifeście? –

+0

Nie. Użytkownik musi sam dodać aplikację. Nie możesz tego zrobić programowo. Na niektórych urządzeniach aplikacja może zostać automatycznie dodana, jeśli jest zainstalowana ze sklepu Play (zamiast instalowania przez ADB), ale nie jestem pewien, które urządzenia to zrobią. Nie wszyscy. –

+0

Nie mogę znaleźć takich opcji w telefonach lenovo. –

3

Używam metody onTaskRemoved() w usłudze, aby wykryć, kiedy aplikacja została usunięta z listy urządzeń OSTATNIO, przesuwając ją.

Z dając więcej światła do odpowiedzi udzielonej przez David Wasser

To nie nowość na Xiaomi ponieważ Xiaomi posiada funkcję o nazwie aplikacji pozwolenie, gdzie użytkownik musi zezwolić aplikacja uruchomi się automatycznie (serwis) . W twoim przypadku Service nie jest wywoływany, po jego zakończeniu ze stosu.

Go tak i umożliwić aplikacji do autostartu:

Settings > permissions > Autostart

+0

Jak włączyć autistart programowy sposób, Czy jest to możliwe w manifeście w momencie samego czasu instalacji? –

+0

Po pierwsze, dzieje się tak tylko na Xiaomi i kilku innych japońskich i chińskich słuchawkach. Nie można włączyć automatyki programowej, ponieważ nie jest to problem z globalnym telefonem. Preferowanym sposobem jest dodanie wiadomości w 'onDeatroy' w celu powiadomienia użytkownika. Wciąż znajduję rozwiązania. – W4R10CK

2

W My Huawei również stanąłem przed porblem, Po prostu idź Settin g => Oszczędzanie energii => Chroń aplikację => znajdź swoją aplikację i włącz ją. Usługa zacznie działać.

Powiązane problemy