jak wspomniano here, kiedy ekran się wyłączy, zostanie wywołana onStop()
aktualnej aktywności. Muszę sprawdzić stan włączenia/wyłączenia ekranu po wywołaniu onStop()
mojego. więc zarejestrowałem BroadcastReceiver
dla tych działań (ACTION_SCREEN_ON
ORAZ ACTION_SCREEN_OFF
), aby zapisać bieżący stan włączenia/wyłączenia (i działają one poprawnie, mam zarejestrowane!).
, ale kiedy wyłączam ekran i sprawdzam stan włączenia/wyłączenia w onStop
, oznacza to, że ekran jest włączony. czemu? Myślę, że odbiornik musi otrzymać ACTION_SCREEN_OFF
przed onStop
nazywa się, co jest nie tak?jak sprawdzić stan włączenia/wyłączenia ekranu w onStop()?
Odpowiedz
Można spróbować użyć usługę systemową PowerManager do tego celu, jest tu przykładem i official documentation (uwaga ta metoda została dodana w poziomie API 7):
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
boolean isScreenOn = pm.isScreenOn();
EDIT
:isScreenOn (metoda) jest przestarzała poziom API 21. należy używać isInteractive zamiast:
boolean isScreenOn = pm.isInteractive();
http://developer.android.com/reference/android/os/PowerManager.html#isInteractive()
doskonały Alexander! 'BroadcastReceiver' nie otrzymał akcji w momencie, kiedy chciałem, ale ten się udało :) – Soheil
' pm.isScreenOn() 'jest przestarzałe. –
@SuperThomasLab Czego użyć zamiast tego? –
- 1. Jak sprawdzić stan dwóch tarczy?
- 2. onCreate() po zakończeniu() w onStop()
- 3. Jak sprawdzić stan mieszkania bieżącego wątku?
- 4. Uruchamianie skryptu Pythona w skrypcie - Sprawdzić stan
- 5. Jak sprawdzić stan sieci w reakcji na natywną aplikację
- 6. Jak programowo sprawdzić stan połączenia urządzenia Bluetooth w systemie Android?
- 7. Oracle puste warunki, aby sprawdzić "" stan
- 8. JavaScript, aby sprawdzić stan połączenia bezprzewodowego
- 9. Jak zresetować stan StackNavigator zagnieżdżony w DrawerNavigatior?
- 10. Jak sprawdzić stan obiektu zdarzenia bez jego rzeczywistej zmiany?
- 11. Android: kiedy wyrejestrować odbiorcę - onStop() lub onDestroy()
- 12. Cykl życia androida onActivityResult vs onStop
- 13. Funkcja onStop jest wywoływana przed onStart
- 14. jak sprawdzić status ekranu na urządzeniu z Androidem?
- 15. Jak uzyskać bieżący stan nawigacji
- 16. Jak mogę uzyskać stan programu?
- 17. Aktywność Android onDestroy() wywołana na blokadzie ekranu
- 18. Problemy z wykryciem cyklu życia ekranu podczas wyświetlania ekranu:
- 19. Korzystanie stan jak w zapytaniu w CakePHP
- 20. Jak przywrócić zwinięty pasek narzędzi Układ Stan po zmianie orientacji ekranu
- 21. Stan użytkownika w Parsec
- 22. Jak zmienić stan elementu preferencji spoza PreferenceActivity?
- 23. Junit assert lub stan w moim przypadku
- 24. Sprawdź stan AutoResetEvent
- 25. Współdzielony stan w komponencie Ember
- 26. Jak sprawdzić, czy program ViewPager przewinął połowę ekranu w systemie Android?
- 27. Jak wykryć bieżący stan w dyrektywie
- 28. Jak zmienić stan przycisku w pliku angular.js?
- 29. AvalonEdit :: Jak zachować aktualny stan w UndoStack?
- 30. Jak zmienić sprawdzony stan ToolStripItem w WinForm?
"Myślę, że odbiornik musi odebrać ACTION_SCREEN_OFF przed wywołaniem funkcji onStop, więc co jest nie tak?" - Nie mam pojęcia, dlaczego byś to założył. Użyj instrukcji 'Log' lub punktów przerwania, aby zobaczyć, która z nich zostanie wywołana jako pierwsza. Co więcej, przeprojektuj aplikację, aby nie przejmowała się tym, czy 'onStop()' jest wywoływana, ponieważ ekran jest wyłączany, w porównaniu z jakimkolwiek innym powodem. – CommonsWare
@CommonsUrządzenie musi mieć możliwość odróżnienia się w różnych sytuacjach, w których 'onStop' jest wywoływany, więc muszę wiedzieć, czy wyłączenie ekranu spowodowało wywołanie' onStop' lub inną rzecz. jakieś lepsze rozwiązanie? – Soheil
"aplikacja musi być w stanie odróżnić się od różnych sytuacji, w których onStop jest wywoływany" - dlaczego? Jaką różnicę wpływa na aplikację, czy ekran jest wyłączony, czy użytkownik nacisnął HOME, czy użytkownik nacisnął BACK, czy użytkownik wykonał przychodzące połączenie telefoniczne, czy użytkownik stuknął w powiadomienie, czy użytkownik zrobił coś innego to spowodowało, że twoja działalność przestała być widoczna? Wyłączanie ekranu zwykle nie jest przypadkiem specjalnym. – CommonsWare