Middle+
Opowiedz o antipatternach w rozwoju Androida.
sobes.tech AI
Odpowiedź od AI
- Używanie
AsyncTaskdo długotrwałych operacji (lepiej używać Kotlin Coroutines lub RxJava). - Przekazywanie View/Context do ViewModel (powoduje wycieki pamięci).
- Dziedziczenie bezpośrednio po
ActivitylubFragmentdla podstawowej logiki (lepiej używać kompozycji). - Sztywne kodowanie stringów, liczb, kolorów zamiast korzystania z zasobów.
- Blokowanie głównego wątku (
MainThread) długimi operacjami synchronicznymi. - Używanie zmiennych statycznych do przechowywania danych wymagających cyklu życia.
- Nadmierne użycie zagnieżdżonych layoutów, co prowadzi do problemów z wydajnością (
ConstraintLayoutlubLinearLayoutzweightjest lepsze). - Brak obsługi zmian konfiguracji (obrót ekranu, zmiana języka).
- Bezpośredni dostęp do baz danych lub operacji sieciowych z wątku UI.
- Nieprawidłowe użycie
SharedPreferencesdo przechowywania dużych obiektów lub poufnych danych. - Brak obsługi wyjątków lub jej nieprawidłowa implementacja (np. puste bloki
catch). - Używanie intencji niejawnych bez sprawdzania dostępności odpowiednich aktywności (
resolveActivity). - Nieprawidłowe zarządzanie subskrypcjami (np. w RxJava), co prowadzi do wycieków.
Przykład nadmiernego zagnieżdżenia layoutów:
<!-- Złe -->
<LinearLayout>
<LinearLayout>
<TextView/>
</LinearLayout>
</LinearLayout>
<!-- Dobre -->
<LinearLayout>
<TextView/>
</LinearLayout>