W przypadku języka Java wystarczyło skorzystać bezpośrednio z klasy System i jednej z dwóch jej metod. Przy okazji nieświadomie zakładaliśmy, że w czasie wykonywania pomiaru czas systemowy nie zostanie sztucznie zmieniony przez użytkownika, lub jakikolwiek proces na maszynie. W przypadku systemu na smartphonie to założenie może prowadzić do o wiele większych błędów niż w przypadku J2SE na jakimś desktopie. Tak więc SDK Androida dostarcza nam programistom kilku metod pobrania znacznie dokładniejszego czasu.
android.os.SystemClock.uptimeMillis()
Powyższa metoda pozwala na pobranie czasu od momentu uruchomienia urządzenia. Dokładnie czasu pracy, czyli w momencie gdy smartphone jest w stanie uśpienia, licznik nie jest inkrementowany. Poniżej znajduje się metoda podająca czas od momentu uruchomienia wliczając w to czas w uśpieniu.
android.os.SystemClock.elapsedRealtime()
Sama metoda pomiaru pozostaje bez zmian. Tak jak wykonując pomiar czasu w ASM odejmowaliśmy początek od końca pomiaru, tak samo należy wykonać tutaj. To jest w programowaniu piękne, że te same metody sprawdzają się niemal dla każdego języka programowania i niemal każdego urządzenia.
Android dostarcza jeszcze dwóch ciekawych metod. Pierwsza z nich podaje czas procesora w ms jaki proces skonsumował. Druga dostarcza tej samej informacji dla aktualnego wątku.
android.os.Process.getElapsedCpuTime() android.os.SystemClock.currentThreadTimeMillis()
Ten post jest wynikiem raczej krótkich poszukiwań. Osoby co bardziej ciekawe odsyłam do dokumentacji klasy SystemClock. Można tam znaleźć jeszcze parę ciekawych rzeczy.
Czytaj też:
Brak komentarzy:
Prześlij komentarz