Udostępnij przez


Optymalizowanie działania w tle

Aplikacje uniwersalne systemu Windows powinny działać spójnie we wszystkich rodzinach urządzeń. Na urządzeniach zasilanych z baterii zużycie energii jest krytycznym czynnikiem w doświadczeniu użytkownika z aplikacją. Całodzienna żywotność baterii jest pożądaną cechą dla każdego użytkownika, ale wymaga wydajności ze wszystkich programów zainstalowanych na urządzeniu, w tym twojego własnego.

Zachowanie zadania w tle jest prawdopodobnie najważniejszym czynnikiem całkowitego kosztu energii aplikacji. Zadanie w tle to każde działanie programu zarejestrowane w systemie do uruchomienia bez otwierania aplikacji. Aby uzyskać więcej informacji, zobacz Tworzenie i rejestrowanie zadania w tle poza procesem .

Uprawnienia działania w tle

Na urządzeniach stacjonarnych i przenośnych z systemem Windows 10 w wersji 1607 lub nowszej użytkownicy mogą wyświetlić swoje "Użycie baterii według aplikacji" w sekcji Bateria w obszarze Ustawienia systemu Windows. W tym miejscu zostanie wyświetlona lista aplikacji i procentowa żywotność baterii, z której korzysta każda aplikacja (poza ilością baterii, która została użyta od ostatniego ładowania). W przypadku aplikacji platformy UWP na tej liście użytkownicy mogą wybrać aplikację, aby otworzyć kontrolki związane z działaniem w tle.

użycie baterii przez aplikację

Uprawnienia w tle na urządzeniach przenośnych

Na urządzeniach przenośnych użytkownicy zobaczą listę przycisków radiowych, które określają ustawienie uprawnień zadania w tle dla tej aplikacji. Działanie w tle można ustawić na wartość "Zawsze dozwolone", "Nigdy nie dozwolone" lub "Zarządzane przez system Windows", co oznacza, że działanie aplikacji w tle jest regulowane przez system zgodnie z wieloma czynnikami.

Przyciski radiowe uprawnień zadań w tle

Uprawnienia aplikacji działających w tle na pulpicie

Na urządzeniach stacjonarnych ustawienie "Zarządzane przez system Windows" jest prezentowane jako przełącznik ustawiony domyślnie na wartość Włączone . Jeśli użytkownik przełączy się na wyłączone, zostanie wyświetlone pole wyboru, za pomocą którego można ręcznie zdefiniować uprawnienia działania w tle. Po zaznaczeniu pola aplikacja będzie mogła uruchamiać zadania w tle przez cały czas. Gdy pole jest niezaznaczone, działanie w tle zostanie wyłączone.

włączenie przełącznika uprawnień dla zadań w tle

wyłącznik uprawnień zadań w tle

W aplikacji możesz użyć wartości wyliczenia BackgroundAccessStatus zwróconej przez wywołanie metody BackgroundExecutionManager.RequestAccessAsync(), aby określić jego bieżący status uprawnień do działania w tle.

Chodzi o to, że jeśli aplikacja nie implementuje odpowiedzialnego zarządzania działaniami w tle, użytkownik może całkowicie odmówić uprawnień w tle do aplikacji, co nie jest pożądane dla żadnej ze stron. Jeśli Twojej aplikacji odmówiono uprawnień do działania w tle, ale wymaga ona aktywności w tle, aby wykonać zadanie dla użytkownika, możesz powiadomić go i wskazać, jak przejść do Ustawień systemu Windows. Można to zrobić, uruchamiając ustawienia systemu Windows na stronie Aplikacje w tle lub Szczegóły użycia baterii.

Praca z funkcją oszczędzania baterii

Oszczędzanie baterii to funkcja na poziomie systemu, którą użytkownicy mogą skonfigurować w ustawieniach. Odcina wszystkie działania w tle wszystkich aplikacji, gdy poziom baterii spadnie poniżej progu zdefiniowanego przez użytkownika, z wyjątkiem aktywności w tle aplikacji, które zostały ustawione na wartość "Zawsze dozwolone".

Sprawdź stan trybu oszczędzania baterii z poziomu aplikacji, odwołując się do właściwości PowerManager.EnergySaverStatus . Jest to wartość wyliczenia: EnergySaverStatus.Disabled, EnergySaverStatus.Off lub EnergySaverStatus.On. Jeśli aplikacja wymaga działania w tle i nie jest ustawiona na wartość "Zawsze dozwolone", powinna obsługiwać funkcję EnergySaverStatus.On , powiadamiając użytkownika, że dane zadania w tle nie będą uruchamiane, dopóki funkcja oszczędzania baterii nie zostanie wyłączona. Chociaż zarządzanie działaniami w tle jest głównym celem funkcji oszczędzania baterii, aplikacja może wprowadzić dodatkowe korekty w celu dalszego oszczędzania energii, gdy jest włączony oszczędzanie baterii. W przypadku, gdy funkcja oszczędzania baterii jest włączona, aplikacja może zmniejszyć użycie animacji, zatrzymać sondowanie lokalizacji lub opóźnić synchronizacje i kopie zapasowe.

Dalsze optymalizowanie zadań w tle

Poniżej przedstawiono dodatkowe kroki, które można wykonać podczas rejestrowania zadań w tle, aby były bardziej przyjazne dla baterii.

Użyj wyzwalacza serwisowego

Obiekt MaintenanceTrigger może służyć zamiast obiektu SystemTrigger do określenia, kiedy zadanie w tle zostanie uruchomione. Zadania korzystające z wyzwalaczy konserwacji będą uruchamiane tylko wtedy, gdy urządzenie jest podłączone do zasilania sieciowego i mogą działać dłużej. Aby uzyskać instrukcje, zobacz Używanie wyzwalacza konserwacji .

Użyj typu warunku systemowego BackgroundWorkCostNotHigh

Aby uruchamiać zadania w tle, należy spełnić warunki systemowe (zobacz Ustawianie warunków uruchamiania zadania w tle , aby uzyskać więcej informacji). Koszt pracy w tle to pomiar, który określa względny wpływ energii na uruchomienie zadania w tle. Zadanie uruchomione, gdy urządzenie jest podłączone do zasilania ac, zostanie oznaczone jako niskie (mało/bez wpływu na baterię). Zadanie działające, gdy urządzenie jest zasilane z baterii i ekran jest wyłączony, jest oznaczone jako wysokie , ponieważ prawdopodobnie na urządzeniu działa niewiele programów, więc zadanie w tle miałoby większy względny koszt. Zadanie uruchomione, gdy urządzenie jest zasilane z baterii, a ekran jest włączony, jest oznaczone jako średnie, ponieważ prawdopodobnie jakieś działanie programu już trwa, a zadanie w tle dodałoby jeszcze trochę do kosztów zużycia energii. Warunek systemowy BackgroundWorkCostNotHigh po prostu opóźnia możliwość uruchomienia zadania, dopóki ekran nie zostanie włączony lub urządzenie jest podłączone do zasilania ac.

Testowanie wydajności baterii

Pamiętaj, aby przetestować aplikację na rzeczywistych urządzeniach w przypadku scenariuszy wysokiego zużycia energii. Dobrym pomysłem jest przetestowanie aplikacji na wielu różnych urządzeniach z włączonym i wyłączonym oszczędzaniem baterii oraz w środowiskach o różnej sile sieci.