Τι είναι το 'Πλαίσιο' στο Android;

Στον προγραμματισμό Android, τι ακριβώς είναι η κλάση Context και για ποιο λόγο χρησιμοποιείται;

Διάβασα γι' αυτό στην ιστοσελίδα του προγραμματιστή, αλλά δεν μπορώ να το καταλάβω με σαφήνεια.

Λύση

Με απλά λόγια:

Είναι το πλαίσιο της τρέχουσας κατάστασης της εφαρμογής/του αντικειμένου. Επιτρέπει στα νεοσύστατα αντικείμενα να καταλάβουν τι έχει συμβεί. Συνήθως το καλείτε για να λάβετε πληροφορίες σχετικά με ένα άλλο μέρος του προγράμματός σας (δραστηριότητα και πακέτο/εφαρμογή).

Μπορείτε να λάβετε το πλαίσιο καλώντας τις κλάσεις getApplicationContext(), getContext(), getBaseContext() ή this (όταν βρίσκεστε σε μια κλάση που επεκτείνεται από την Context, όπως οι κλάσεις Application, Activity, Service και IntentService).

Τυπικές χρήσεις του context:

  • Δημιουργία νέων αντικειμένων: Δημιουργία νέων προβολών, προσαρμογέων, ακροατών:

     TextView tv = new TextView(getContext()),
     ListAdapter adapter = new SimpleCursorAdapter(getApplicationContext(), ...),
  • Πρόσβαση σε τυπικούς κοινούς πόρους: Υπηρεσίες όπως LAYOUT_INFLATER_SERVICE, SharedPreferences:

     context.getSystemService(LAYOUT_INFLATER_SERVICE)
     getApplicationContext().getSharedPreferences(*name*, *mode*),
  • Πρόσβαση σε στοιχεία σιωπηρά: Όσον αφορά τους παρόχους περιεχομένου, τις εκπομπές, την πρόθεση

     getApplicationContext().getContentResolver().query(uri, ...),
Σχόλια (6)

Ένα Πλαίσιο είναι μια χειρολαβή στο σύστημα- παρέχει υπηρεσίες όπως η επίλυση πόρων, η πρόσβαση σε βάσεις δεδομένων και προτιμήσεις κ.ο.κ. Μια εφαρμογή Android έχει δραστηριότητες. Το Πλαίσιο είναι σαν μια λαβή για το περιβάλλον στο οποίο εκτελείται αυτή τη στιγμή η εφαρμογή σας. Το αντικείμενο activity κληρονομεί το αντικείμενο Context.

Για περισσότερες πληροφορίες, ανατρέξτε στο Εισαγωγή στην ανάπτυξη Android με το Android Studio - Tutorial.

Σχόλια (0)

Ένα Πλαίσιο του Android είναι μια Διασύνδεση (με τη γενική έννοια, όχι με την έννοια της Java- στη Java, το "Πλαίσιο" είναι στην πραγματικότητα μια αφηρημένη κλάση!) που επιτρέπει την πρόσβαση σε πόρους και κλάσεις συγκεκριμένης εφαρμογής και σε πληροφορίες σχετικά με το περιβάλλον της εφαρμογής.

Αν η εφαρμογή σας στο android ήταν μια εφαρμογή ιστού, το περιβάλλον σας θα ήταν κάτι παρόμοιο με το ServletContext (δεν κάνω ακριβή σύγκριση εδώ).

Οι δραστηριότητες και οι υπηρεσίες σας επεκτείνουν επίσης το Context, οπότε κληρονομούν όλες αυτές τις μεθόδους για την πρόσβαση στις πληροφορίες του περιβάλλοντος στο οποίο εκτελείται η εφαρμογή.

Σχόλια (0)