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? –
"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