Sobes.tech
Middle+

Vorbește despre antipatterns în dezvoltarea Android.

sobes.tech AI

Răspuns de la AI

  • Utilizarea AsyncTask pentru operațiuni lungi (mai bine să folosiți Kotlin Coroutines sau RxJava).
  • Transmiterea View/Context în ViewModel (duce la scurgeri de memorie).
  • Moștenirea directă de la Activity sau Fragment pentru logica de bază (mai bine să folosiți compoziție).
  • Codificare rigidă a stringurilor, numerelor, culorilor în loc să folosiți resurse.
  • Blocarea thread-ului principal (MainThread) cu operațiuni sincrone lungi.
  • Utilizarea variabilelor statice pentru stocarea datelor care necesită ciclul de viață.
  • Utilizarea excesivă a layout-urilor imbricate, ceea ce duce la probleme de performanță (ConstraintLayout sau LinearLayout cu weight este mai bine).
  • Lipsa gestionării schimbărilor de configurație (rotirea ecranului, schimbarea limbii).
  • Acces direct la baze de date sau operațiuni de rețea din thread-ul UI.
  • Utilizarea incorectă a SharedPreferences pentru stocarea obiectelor mari sau datelor confidențiale.
  • Lipsa gestionării excepțiilor sau implementarea incorectă a acesteia (de exemplu, blocuri catch goale).
  • Utilizarea intențiilor implicite fără verificarea existenței activităților potrivite (resolveActivity).
  • Gestionarea incorectă a abonamentelor (de exemplu, în RxJava), ceea ce duce la scurgeri.

Exemplu de supraîncărcare a layout-urilor:

<!-- Rău -->
<LinearLayout>
    <LinearLayout>
        <TextView/>
    </LinearLayout>
</LinearLayout>

<!-- Bun -->
<LinearLayout>
    <TextView/>
</LinearLayout>