Middle+
Μίλησε για τα αντιπαραδείγματα στην ανάπτυξη Android.
sobes.tech AI
Απάντηση από AI
- Χρήση του
AsyncTaskγια μακροχρόνιες λειτουργίες (καλύτερα να χρησιμοποιείτε Kotlin Coroutines ή RxJava). - Μεταβίβαση View/Context στο ViewModel (προκαλεί διαρροές μνήμης).
- Άμεση κληρονομία από
ActivityήFragmentγια βασική λογική (καλύτερα να χρησιμοποιείτε σύνθεση). - Σκληρό κωδικοποίηση συμβολοσειρών, αριθμών, χρωμάτων αντί να χρησιμοποιείτε πόρους.
- Πάγωμα του κύριου νήματος (
MainThread) με μακροχρόνιες συγχρονικές λειτουργίες. - Χρήση στατικών μεταβλητών για αποθήκευση δεδομένων που απαιτούν κύκλο ζωής.
- Υπερβολική χρήση εμφωλευμένων διατάξεων, που οδηγεί σε προβλήματα απόδοσης (
ConstraintLayoutήLinearLayoutμε βάρος είναι καλύτερα). - Έλλειψη διαχείρισης αλλαγών διαμόρφωσης (περιστροφή οθόνης, αλλαγή γλώσσας).
- Άμεση πρόσβαση σε βάσεις δεδομένων ή λειτουργίες δικτύου από το UI νήμα.
- Λανθασμένη χρήση του
SharedPreferencesγια αποθήκευση μεγάλων αντικειμένων ή εμπιστευτικών δεδομένων. - Έλλειψη διαχείρισης εξαιρέσεων ή εσφαλμένη υλοποίησή της (π.χ. κενά μπλοκ
catch). - Χρήση αόρατων προθέσεων χωρίς έλεγχο ύπαρξης κατάλληλων δραστηριοτήτων (
resolveActivity). - Λανθασμένη διαχείριση συνδρομών (π.χ. σε RxJava), που οδηγεί σε διαρροές.
Παράδειγμα υπερβολικής εμφωλευμένης διάταξης:
<!-- Κακό -->
<LinearLayout>
<LinearLayout>
<TextView/>
</LinearLayout>
</LinearLayout>
<!-- Καλό -->
<LinearLayout>
<TextView/>
</LinearLayout>