Βίντεο: Android 101 by Fred Widjaja 2024
Για τα θέματα που ενεργοποιούν συγκεκριμένα συμβάντα αντίστροφης μέτρησης, όπως η πλημμύρα του πληκτρολογίου εκκίνησης, η εκκίνηση των συμβάντων και η ανύψωση, μπορείτε να δημιουργήσετε μια άλλη κλάση Java που ονομάζεται LaunchEvent. Αυτή η κλάση χρησιμοποιεί μια άλλη τεχνική για τη δημιουργία και την έναρξη των κλωστών - μία που απαιτεί λίγες ακόμη γραμμές κώδικα αλλά είναι πιο ευέλικτη.
Το πρόβλημα με τη δημιουργία μιας κλάσης που επεκτείνει την κλάση Thread είναι ότι μια κλάση μπορεί να έχει μια υπερκλάση. Τι γίνεται αν προτιμάτε το αντικείμενο του νήματος να επεκταθεί σε κάποια άλλη κατηγορία; Σε αυτή την περίπτωση, μπορείτε να δημιουργήσετε μια κλάση που υλοποιεί τη διεπαφή Runnable αντί να επεκτείνει την κλάση Thread.
Η διεπαφή Runnable σηματοδοτεί ένα αντικείμενο που μπορεί να τρέξει ως νήμα. Έχει μόνο μία μέθοδο, τρέχει, που περιέχει τον κώδικα που εκτελείται στο νήμα. (Η ίδια η κλάση Thread υλοποιεί το Runnable και γι 'αυτό η κλάση Thread έχει μια μέθοδο εκτέλεσης.)
Για να χρησιμοποιήσετε τη διεπαφή Runnable για να δημιουργήσετε και να ξεκινήσετε ένα νήμα, πρέπει να κάνετε τα εξής:
-
Δημιουργήστε μια κλάση που υλοποιεί Δυνατότητα εκτέλεσης.
-
Παρέχετε μια μέθοδο εκτέλεσης στην κλάση Runnable.
-
Δημιουργήστε μια εμφάνιση της κλάσης Thread και μεταδώστε το αντικείμενο Runnable στον κατασκευαστή του ως παράμετρο.
Δημιουργείται ένα αντικείμενο Thread που μπορεί να εκτελέσει την κλάση Runnable.
-
Καλέστε τη μέθοδο έναρξης του αντικειμένου Thread.
Η μέθοδος εκτέλεσης του αντικειμένου Runnable σας καλείται και εκτελείται σε ξεχωριστό νήμα.
Τα πρώτα δύο από αυτά τα βήματα είναι εύκολα. Το τέχνασμα βρίσκεται στο τρίτο και τέταρτο βήμα, επειδή μπορείτε να τα ολοκληρώσετε με διάφορους τρόπους. Εδώ είναι ένας τρόπος, υποθέτοντας ότι το Runnable τάξη σας ονομάζεται RunnableClass:
RunnableClass rc = Νέο RunnableClass (); Θέμα t = νέο νήμα (rc); t. αρχή();
Οι προγραμματιστές Java επιθυμούν να είναι όσο το δυνατόν πιο σύντομοι, έτσι ώστε να βλέπετε συχνά αυτόν τον κώδικα συμπιεσμένο σε κάτι περισσότερο σαν
Thread t = new Thread (new RunnableClass ()); t. αρχή();
ή ακόμα και μόνο:
νέο Θέμα (νέο RunnableClass ()). αρχή();
Αυτή η έκδοση μιας γραμμής λειτουργεί - με την προϋπόθεση ότι δεν χρειάζεται να έχετε πρόσβαση στο αντικείμενο κλωστής αργότερα στο πρόγραμμα.