Systemy operacyjne dla urządzeń mobilnych

Sposób testowania i oczekiwane efekty

Podzczas testowania aplikacji na emulatorze przydatna może być znajomość pewnych skrtótów
  1. Uruchamiamy aplikację

  2. Na pierwszym ekranie (aktywność pierwsza) kontrolka Chronometer powinna odmierzeć czas.

    Naciskamy przycisk Go to Activity 2.
  3. Ekran drugi (aktywność druga).

    Naciskamy przycisk Go to Activity 3.
  4. Ekran trzeci (aktywność trzecia).

    Widzimy licznik wyświetlający wartość 0 w polu tekstowym typu TextView. Wartość tego licznika zmienia się przy każdej zmianie konfiguracji i zapamiętywany oraz odtwarzany jest wraz ze stanem egzemplarza aplikacji (metody onSaveInstanceState oraz onRestoreInstanceState).
  5. W polu tekstowym typu EditText wpisujemy tekst kontrolny: test test test

  6. Zmieniamy orientację telefonu (Ctrl+F12 w emulatorze). Tekst z pola tesktowego typu EditText został odtworzony bez naszego udziału (pamiętamy, że zmiana orientacji powoduje zmianę konfiguracji telefonu a w konsekwencji pownowne utworzenie danej aktywności).

    Wartość licznika została zwiększona o 1.

  7. Ponownie została zmieniona orientacja (Ctrl + F11 w emulatorze). Tekst zachowany, licznik zwiększony.

    Naciskamy klawisz Home (Home w emulatorze)
  8. Powracamy do ekranu głównego telefonu.

  9. Ponownie uruchamiamy naszą aplikację (bardziej precyzyjnie: wznawiamy ją).

  10. Powinniśmy zobaczyć ekran 3. Tekst zachowany, licznik zwiększony.

  11. Ponownie została zmieniona orientacja (Ctrl + F12 w emulatorze). Tekst zachowany, licznik zwiększony. W tym przypadku udało się nawet przechwycić komunikat typu Toast związany z obsługą stanu egzemplarza niezwiązanego z konfiguracją (metoda onRetainNonConfigurationInstance do zapisu pewnych wartości, metoda getLastNonConfigurationInstance do odtworzenia).


  12. Naciskamy przycisk wstecz (ESC w emulatorze).
  13. Ekran drugi (aktywność druga).

    Naciskamy przycisk Go to Activity 3.
  14. Powinniśmy zobaczyć ekran 3. zarówno tekst jak i licznik nie zostały zachowane. Przycisk wstecz powoduje zakończnie aktywności z której się wychodzi. A zatem musiała ona zostac od nowa zbudowana tak jak gdybyśmy uruchamiali ją pierwszy raz.

    Naciskamy przycisk wstecz (ESC w emulatorze).
  15. Powinniśmy zobaczyć ekran 2.

    Naciskamy przycisk wstecz (ESC w emulatorze).
  16. Powinniśmy zobaczyć ekran 1.

  17. Na kórym kontrolka Chronometer odmierza czas. Za każdym razem jednak, gdy wyświetlamy ten ekran, jest ona zerowana.

    Naciskmay przycisk Finish aby zakończyć aplikację


  18. Rozwijamy górne menu w celu obejrzenia powiadomień typu Notification.

Wygląd przykładowych powiadomień typu Notification zaprojektowanych przez użytkownika.

Log powstały podczas działania aplikacji
03-07 19:08:30.658 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onCreate pl.fulmanski.android.tutorial.project_02.MainActivity (2016-02-07 07:08:30:659)
03-07 19:08:30.700 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onStart pl.fulmanski.android.tutorial.project_02.MainActivity (2016-02-07 07:08:30:705)
03-07 19:08:30.718 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onResume pl.fulmanski.android.tutorial.project_02.MainActivity (2016-02-07 07:08:30:720)
03-07 19:08:45.948 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onPause pl.fulmanski.android.tutorial.project_02.MainActivity (2016-02-07 07:08:45:953)
03-07 19:08:45.979 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onCreate pl.fulmanski.android.tutorial.project_02.Activity2 (2016-02-07 07:08:45:982)
03-07 19:08:45.988 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onStart pl.fulmanski.android.tutorial.project_02.Activity2 (2016-02-07 07:08:45:990)
03-07 19:08:45.988 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onResume pl.fulmanski.android.tutorial.project_02.Activity2 (2016-02-07 07:08:45:996)
03-07 19:08:46.298 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onSaveInstanceState pl.fulmanski.android.tutorial.project_02.MainActivity (2016-02-07 07:08:46:302)
03-07 19:08:46.298 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onStop pl.fulmanski.android.tutorial.project_02.MainActivity (2016-02-07 07:08:46:307)
03-07 19:08:58.079 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onPause pl.fulmanski.android.tutorial.project_02.Activity2 (2016-02-07 07:08:58:079)
03-07 19:08:58.119 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onCreate pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:08:58:119)
03-07 19:08:58.128 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onStart pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:08:58:130)
03-07 19:08:58.128 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onResume pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:08:58:136)
03-07 19:08:58.420 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onSaveInstanceState pl.fulmanski.android.tutorial.project_02.Activity2 (2016-02-07 07:08:58:427)
03-07 19:08:58.429 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onStop pl.fulmanski.android.tutorial.project_02.Activity2 (2016-02-07 07:08:58:432)
03-07 19:09:32.350 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onPause pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:09:32:358)
03-07 19:09:32.360 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onSaveInstanceState pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:09:32:367)
03-07 19:09:32.389 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onStop pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:09:32:394)
03-07 19:09:32.409 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onDestroy pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:09:32:411)
03-07 19:09:32.519 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onCreate pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:09:32:522)
03-07 19:09:32.569 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onStart pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:09:32:571)
03-07 19:09:32.569 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onRestoreInstanceState pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:09:32:576)
03-07 19:09:32.609 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onResume pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:09:32:612)
03-07 19:10:09.940 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onPause pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:10:09:942)
03-07 19:10:09.940 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onSaveInstanceState pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:10:09:947)
03-07 19:10:09.950 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onStop pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:10:09:954)
03-07 19:10:09.960 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onDestroy pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:10:09:964)
03-07 19:10:10.050 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onCreate pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:10:10:051)
03-07 19:10:10.111 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onStart pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:10:10:118)
03-07 19:10:10.120 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onRestoreInstanceState pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:10:10:123)
03-07 19:10:10.130 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onResume pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:10:10:136)
03-07 19:11:09.330 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onPause pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:11:09:332)
03-07 19:11:09.942 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onSaveInstanceState pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:11:09:946)
03-07 19:11:09.951 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onStop pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:11:09:950)
03-07 19:11:38.101 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onStart pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:11:38:103)
03-07 19:11:38.131 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onResume pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:11:38:139)
03-07 19:11:56.871 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onPause pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:11:56:875)
03-07 19:11:56.871 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onSaveInstanceState pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:11:56:878)
03-07 19:11:56.882 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onStop pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:11:56:889)
03-07 19:11:56.892 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onDestroy pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:11:56:893)
03-07 19:11:56.901 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onCreate pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:11:56:908)
03-07 19:11:57.071 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onStart pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:11:57:072)
03-07 19:11:57.071 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onRestoreInstanceState pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:11:57:077)
03-07 19:11:57.081 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onResume pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:11:57:087)
03-07 19:12:53.162 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onPause pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:12:53:168)
03-07 19:12:53.172 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onRetainNonConfigurationInstance pl.fulmanski.android.tutorial.project_02.Activity2 (2016-02-07 07:12:53:181)
03-07 19:12:53.192 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onDestroy pl.fulmanski.android.tutorial.project_02.Activity2 (2016-02-07 07:12:53:198)
03-07 19:12:53.332 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onCreate pl.fulmanski.android.tutorial.project_02.Activity2 (2016-02-07 07:12:53:215)
03-07 19:12:53.362 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onStart pl.fulmanski.android.tutorial.project_02.Activity2 (2016-02-07 07:12:53:366)
03-07 19:12:53.362 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onRestoreInstanceState pl.fulmanski.android.tutorial.project_02.Activity2 (2016-02-07 07:12:53:370)
03-07 19:12:53.392 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onResume pl.fulmanski.android.tutorial.project_02.Activity2 (2016-02-07 07:12:53:393)
03-07 19:12:53.712 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onStop pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:12:53:716)
03-07 19:12:53.722 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onDestroy pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:12:53:726)
03-07 19:13:05.932 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onPause pl.fulmanski.android.tutorial.project_02.Activity2 (2016-02-07 07:13:05:933)
03-07 19:13:05.942 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onCreate pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:13:05:947)
03-07 19:13:05.963 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onStart pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:13:05:967)
03-07 19:13:05.982 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onResume pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:13:05:988)
03-07 19:13:06.352 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onSaveInstanceState pl.fulmanski.android.tutorial.project_02.Activity2 (2016-02-07 07:13:06:357)
03-07 19:13:06.363 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onStop pl.fulmanski.android.tutorial.project_02.Activity2 (2016-02-07 07:13:06:365)
03-07 19:13:26.162 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onPause pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:13:26:171)
03-07 19:13:26.192 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onStart pl.fulmanski.android.tutorial.project_02.Activity2 (2016-02-07 07:13:26:195)
03-07 19:13:26.192 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onResume pl.fulmanski.android.tutorial.project_02.Activity2 (2016-02-07 07:13:26:198)
03-07 19:13:26.423 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onStop pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:13:26:427)
03-07 19:13:26.433 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onDestroy pl.fulmanski.android.tutorial.project_02.Activity3 (2016-02-07 07:13:26:436)
03-07 19:13:29.873 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onPause pl.fulmanski.android.tutorial.project_02.Activity2 (2016-02-07 07:13:29:875)
03-07 19:13:29.883 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onRetainNonConfigurationInstance pl.fulmanski.android.tutorial.project_02.MainActivity (2016-02-07 07:13:29:888)
03-07 19:13:29.883 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onDestroy pl.fulmanski.android.tutorial.project_02.MainActivity (2016-02-07 07:13:29:890)
03-07 19:13:29.922 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onCreate pl.fulmanski.android.tutorial.project_02.MainActivity (2016-02-07 07:13:29:923)
03-07 19:13:29.922 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onStart pl.fulmanski.android.tutorial.project_02.MainActivity (2016-02-07 07:13:29:929)
03-07 19:13:29.974 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onRestoreInstanceState pl.fulmanski.android.tutorial.project_02.MainActivity (2016-02-07 07:13:29:976)
03-07 19:13:29.984 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onResume pl.fulmanski.android.tutorial.project_02.MainActivity (2016-02-07 07:13:29:985)
03-07 19:13:30.283 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onStop pl.fulmanski.android.tutorial.project_02.Activity2 (2016-02-07 07:13:30:287)
03-07 19:13:30.294 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onDestroy pl.fulmanski.android.tutorial.project_02.Activity2 (2016-02-07 07:13:30:297)
03-07 19:13:42.833 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onPause pl.fulmanski.android.tutorial.project_02.MainActivity (2016-02-07 07:13:42:842)
03-07 19:13:42.883 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onCreate pl.fulmanski.android.tutorial.project_02.Activity2 (2016-02-07 07:13:42:885)
03-07 19:13:42.893 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onStart pl.fulmanski.android.tutorial.project_02.Activity2 (2016-02-07 07:13:42:899)
03-07 19:13:42.923 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onResume pl.fulmanski.android.tutorial.project_02.Activity2 (2016-02-07 07:13:42:924)
03-07 19:13:43.283 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onSaveInstanceState pl.fulmanski.android.tutorial.project_02.MainActivity (2016-02-07 07:13:43:287)
03-07 19:13:43.293 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onStop pl.fulmanski.android.tutorial.project_02.MainActivity (2016-02-07 07:13:43:295)
03-07 19:13:52.663 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onPause pl.fulmanski.android.tutorial.project_02.Activity2 (2016-02-07 07:13:52:670)
03-07 19:13:52.683 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onStart pl.fulmanski.android.tutorial.project_02.MainActivity (2016-02-07 07:13:52:691)
03-07 19:13:52.693 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onResume pl.fulmanski.android.tutorial.project_02.MainActivity (2016-02-07 07:13:52:698)
03-07 19:13:52.993 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onStop pl.fulmanski.android.tutorial.project_02.Activity2 (2016-02-07 07:13:52:997)
03-07 19:13:53.003 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onDestroy pl.fulmanski.android.tutorial.project_02.Activity2 (2016-02-07 07:13:53:005)
03-07 19:14:04.763 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onPause pl.fulmanski.android.tutorial.project_02.MainActivity (2016-02-07 07:14:04:766)
03-07 19:14:05.603 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onStop pl.fulmanski.android.tutorial.project_02.MainActivity (2016-02-07 07:14:05:610)
03-07 19:14:05.613 10807-10807/pl.fulmanski.android.tutorial.project_02 D/LogLifecycleActivity: onDestroy pl.fulmanski.android.tutorial.project_02.MainActivity (2016-02-07 07:14:05:619)

Dodatkowe zasoby

  1. W ramach projektu utworzono strukturę katalogowo plikową pokazaną poniżej

    zawierającą następujące pliki
    • AndroidManifest.xml
    • activity_main.xml
    • activity_2.xml
    • activity_3.xml
    • MainActivity.java
    • Activity2.java
    • Activity3.java
    • strings.xml
    • LogLifecycleActivity.java
    • my_notification_layout.xml
    • Do projektu należy jeszcze w katalogu res/drawable umieścić ikony wykorzystywane przez Toast, ale to można łatwo wygenerować klikając na katalogu res prawym przyciskiem myszy.