Tutorial Services Android: Πώς να εκτελέσετε μια εφαρμογή στο παρασκήνιο;



Αυτό το σεμινάριο υπηρεσιών Android σάς βοηθά να κατανοήσετε πώς να εκτελείτε λειτουργίες στο παρασκήνιο, όπως η αναπαραγωγή μουσικής, δεν έχει συνημμένο UI

Συχνά χρησιμοποιώντας πολλές εφαρμογές στο smartphone σας, ίσως θέλετε να αλλάξετε από μια εφαρμογή σε άλλη, αλλά επίσης να διασφαλίσετε ότι όλες οι εφαρμογές σας παραμένουν ενεργές στο παρασκήνιο. Αυτά δεν είναι τίποτα άλλο από τις υπηρεσίες που προσφέρει . Έτσι, αυτό το άρθρο σχετικά με το Android Services Tutorial θα σας βοηθήσει να κατανοήσετε πώς να εργαστείτε με τις Υπηρεσίες.

Θα καλύψω τα ακόλουθα θέματα:





Τι είναι οι υπηρεσίες Android;

Η υπηρεσία είναι βασικά μια διαδικασία. Υπηρεσία Android είναι ένα στοιχείο που εκτελείται στο παρασκήνιο για να εκτελεστείμακροχρόνιες λειτουργίες χωρίς αλληλεπίδραση με τον χρήστη και λειτουργεί ακόμη και αν η εφαρμογή έχει καταστραφεί.Ένα άλλο στοιχείο της εφαρμογής μπορεί να ξεκινήσει μια υπηρεσία και συνεχίζει να εκτελείται στο παρασκήνιο ακόμη και αν μεταβείτε σε άλλη εφαρμογή.

Επιπλέον, ένα στοιχείο μπορεί να συνδεθεί με μια υπηρεσία προκειμένου να αλληλεπιδράσει με αυτό και επίσης να εκτελεί επικοινωνία μεταξύ διεργασιών.



Σημείωση: Το android.app.Service είναι μια υποκατηγορία της κλάσης ContextWrapper και η υπηρεσία Android δεν είναι νήμα ή ξεχωριστή διαδικασία.

Android - Υπηρεσίες Κύκλος ζωής

Ο κύκλος ζωής των Υπηρεσιών Android μπορεί να έχει δύο μορφές υπηρεσιών. Ο κύκλος ζωής μιας υπηρεσίας ακολουθεί δύο διαφορετικές διαδρομές, δηλαδή:

  1. Ξεκίνησε
  2. Οριο

Ξεκίνησε



δημιουργία αντιγράφου του αντικειμένου java

Μια υπηρεσία ξεκινά όταν καλεί ένα στοιχείο της εφαρμογής startService () μέθοδος. Μόλις ξεκινήσει, μια υπηρεσία μπορεί να εκτελεστεί στο παρασκήνιο επ 'αόριστον, ακόμη και αν το στοιχείο που είναι υπεύθυνο για την εκκίνηση έχει καταστραφεί. Διακόπτεται με τη χρήση του stopService () μέθοδος. Η υπηρεσία μπορεί επίσης να σταματήσει καλώντας το stopSelf () μέθοδος.

Οριο

Μια υπηρεσία δεσμεύεται όταν ένα στοιχείο της εφαρμογής συνδέεται σε αυτήν μέσω κλήσης bindService () . Η υπηρεσία Bound προσφέρει διεπαφή πελάτη-διακομιστή που επιτρέπει στα στοιχεία να αλληλεπιδρούν με την υπηρεσία, να στέλνουν αιτήματα και να λαμβάνουν αποτελέσματα. Επεξεργάζεται σε επικοινωνία μεταξύ διεργασιών (IPC). Ο πελάτης μπορεί να αποδεσμεύσει την υπηρεσία καλώντας το unbindService () μέθοδος.

Κύκλος ζωής υπηρεσίας Android - Οδηγός υπηρεσιών Android - Edureka

Προχωρώντας στην επόμενη ενότητα αυτού του άρθρου σχετικά με τις Υπηρεσίες Android, ας συζητήσουμε τα διαφορετικάμεθόδους στην κατηγορία υπηρεσιών.

Εκμάθηση υπηρεσιών Android: Μέθοδοι

Υπάρχουν μερικές μέθοδοι με τις οποίες μπορείτε εύκολα να εκτελέσετε λειτουργίες σε οποιαδήποτε εφαρμογή. Κάποιοι από αυτούς είναι:

ΜέθοδοςΠεριγραφή
onStartCommand ()

Αυτή η μέθοδος καλείται όταν οποιοδήποτε άλλο στοιχείο, όπως για παράδειγμα μια δραστηριότητα, ζητά την έναρξη της υπηρεσίας, καλώντας startService () .

Είναι δική σας ευθύνη να σταματήσετε την υπηρεσία όταν η αντίστοιχη εργασία γίνεται χρησιμοποιώντας stopSelf () ή stopService () μεθόδους.

αποσύνδεση ()

Καλεί αυτήν τη μέθοδο όταν ένα άλλο στοιχείο θέλει να δεσμευτεί με την υπηρεσία καλώντας bindService () .

Για να το εφαρμόσετε, πρέπει να παρέχετε μια διεπαφή που χρησιμοποιούν οι πελάτες για να επικοινωνούν με την υπηρεσία. Επιστρέφει ένα IBinder αντικείμενο. Εάν δεν θέλετε να επιτρέψετε τη δέσμευση, επιστρέψτε μηδενικό .

onUnbind ()

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

onRebind ()

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

onCreate ()

Το σύστημα καλεί αυτή τη μέθοδο όταν η υπηρεσία δημιουργείται για πρώτη φορά χρησιμοποιώντας onStartCommand () ή αποσύνδεση () . Απαιτείται να εκτελεστεί μια εφάπαξ ρύθμιση.

onDestroy ()

Αυτή η μέθοδος καλείται όταν η υπηρεσία δεν χρησιμοποιείται πλέον και καταστρέφεται. Η υπηρεσία σας θα πρέπει να το εφαρμόσει προκειμένου να καθαρίσει τυχόν πόρους όπως νήματα, εγγεγραμμένους ακροατές, δέκτες κ.λπ.

Κωδικός σκελετού

Η δημόσια κλάση MainActivity επεκτείνει τη Δραστηριότητα {ιδιωτικό TextView textView ιδιωτικό BroadcastReceiver δέκτη = νέο BroadcastReceiver () {@ Override public void onReceive (Περιεχόμενο περιβάλλοντος, Πρόθεση πρόθεσης) {Bundle bundle = intent.getExtras () if (bundle! = null) {String string = bundle.getString (DownloadService.FILEPATH) int resultCode = bundle.getInt (DownloadService.RESULT) if (resultCode == RESULT_OK) {Toast.makeText (MainActivity.this, 'Λήψη ολοκληρώθηκε. Λήψη URI:' + string, Toast.LENGTH_LONG) .show () textView.setText ('Λήψη ολοκληρώθηκε')} άλλο {Toast.makeText (MainActivity.this, 'Λήψη απέτυχε', Toast.LENGTH_LONG) .show () textView.setText ('Η λήψη απέτυχε')}}}} @Override public void onCreate (Bundle αποθηκευμένοInstanceState) {super.onCreate (saveInstanceState) setContentView (R.layout.activity_main) textView = (TextView) findViewById (R.id.status)} @Override προστατευμένο void onResume () {super.onume () {super.onume registerReceiver (δέκτης, νέο IntentFilter (DownloadService.NOTIFICATION))} @Override προστατευμένο void onPause () {super.onPause () unregisterReceiver (receiver)} public void onClick (Προβολή προβολής) {Intent intent = new Intent (this, DownloadService.class) // προσθήκη πληροφοριών για την υπηρεσία ποιο αρχείο θα κατεβάσει και πού να store intent.putExtra (DownloadService.FILENAME, 'index.html') intent.putExtra (DownloadService.URL, 'www.edureka.co') startService (intent) textView.setText ('Η υπηρεσία ξεκίνησε')}}

Σε αυτό το παράδειγμα, μπορείτε να δείτε τις μεθόδους όπως onCreate () , Επανάληψη () , onPause () . Αυτές οι μέθοδοι αποτελούν τη δομή των Υπηρεσιών στο Android.

Τώρα, φτάνοντας στο πρακτικό μέρος αυτού του Οδηγού Υπηρεσιών Android, ας δούμεπώς να δημιουργήσετε μια υπηρεσία και να τη χειριστείτε.

Διαδήλωση

Ας δούμε πώς να παίζουμε μουσική στο παρασκήνιο. Για να το κάνω αυτό, θα το χρησιμοποιήσω Στούντιο Andriod .

Βήμα 1

Δημιουργήστε ένα νέο κενό έργο. Ονομάστε το έργο σας και κάντε κλικ στο φάκελο Java και κάντε κλικ στο Κύρια δραστηριότητα . Πρώτα, προσθέστε MediaPlayer ώστε να μπορείτε να εισαγάγετε τις λεπτομέρειες του προγράμματος αναπαραγωγής, όπως έναρξη, ρύθμιση του βρόχου και ούτω καθεξής.

package com.example.mydemoapplication import androidx.appcompat.app.AppCompatActivity δημόσια κλάση MainActivity επεκτείνει το AppCompatActivity {@Override προστατευμένο void onCreate (Bundle αποθηκευμένοInstanceState) {super.onCreate (saveInstanceState) setContentView (R.layout.Player_Player.Player.Player.Player.Player.Player.Player.Player.Player (αυτό, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()}}

Σημείωση: Εάν το χρησιμοποιείτε για πρώτη φορά, μην ξεχάσετε να ενεργοποιήσετε το BIOS. Μπορείτε να το κάνετε επανεκκίνηση του συστήματός σας.

Θα πρέπει να προσθέσετε μια εικονική συσκευή. Απλώς κάντε κλικ στο Ανοίξτε τον διαχειριστή AVD.

Επιλέξτε μια συσκευή της επιλογής σας και είστε έτοιμοι!

Αυτό θα εκτελεστεί μόνο όταν η οθόνη είναι ενεργή, αλλά για να λειτουργήσει αυτή η εφαρμογή ακόμη και στο παρασκήνιο, πρέπει να προσθέσετε μερικές ακόμη γραμμές κώδικα στο activity_main.xml αρχείο.

Βήμα 2

Μόλις εκτελέσετε τον αντίστοιχο κωδικό, θα μπορείτε να εκτελέσετε την εφαρμογή και θα μπορείτε να αναπαράγετε τη μουσική στο παρασκήνιο, δηλαδή, εάν ανοίξει κάποια άλλη εφαρμογή, αυτός ο ήχος θα εξακολουθεί να παίζει.

Ας δούμε πώς μπορεί να γίνει αυτό.

  • Δημιουργήστε μια άλλη τάξη στο φάκελο Java και ονομάστε την. Εδώ, το έχω ονομάσει ' MyService '
  • Αυτή η τάξη επεκτείνει την κλάση υπηρεσίας.
  • Μόλις έχετε τις μεθόδους κλάσης υπηρεσίας, εφαρμόστε τις μεθόδους κάνοντας κλικ alt + Enter.
  • Μετά από αυτό, πρέπει να παρακάμψετε τις μεθόδους. Έτσι, κάντε δεξί κλικ στο παράθυρο για να λάβετε τις επιλογές.
  • Δημιουργήστε τις μεθόδους παράκαμψης, επιλέξτε onStartCommand () , και OnDestroy ().
  • Επεξεργαστείτε το onStartCommand () μεθόδους προσθέτοντας τον ακόλουθο κωδικό:
MediaPlayer player = MediaPlayer.create (αυτό, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()

Σημείωση: Διαγράψτε αυτόν τον κωδικό στο Κύρια δραστηριότητα.

  • Αυτό θα προκαλέσει ένα σφάλμα που σας ζητά να καταργήσετε τη δήλωση. Επομένως, καταργήστε τη δήλωση επιστροφής και δηλώστε το MediaPlayer ως ιδιωτική μέθοδο και επιστρέψτε START_STICKY . Αυτό θα επιστρέψει την κατάσταση έναρξης.
  • Προσθήκη player.stop () στο onDestroy () μέθοδος.

Βήμα 3

Παω σε βοδινό κρέας και μεταβείτε στις διατάξεις, κάντε κλικ στο android_main.xml για να λάβετε το αρχείο XML της εφαρμογής.

  • Αφαιρέστε το TextView και αντικαταστήστε το με το LinearLayout και προσθέστε κουμπιά. Προσθέστε τον αντίστοιχο κωδικό.
<Γραμμική διάταξη Android:προσανατολισμός= 'κάθετη' Android: layout_width= 'match_parent' Android: layout_height= 'wrap_content' Android: layout_centerVertical= 'αλήθεια' εργαλεία:αγνοώ= 'MissingConstraints'><Κουμπί Android:ταυτότητα= '@ + id / buttonStart' Android:κείμενο= 'Έναρξη υπηρεσίας' Android: layout_width= 'wrap_content' Android: layout_height= 'match_parent'/><Κουμπί Android:ταυτότητα= '@ + id / buttonStop' Android:κείμενο= 'Διακοπή υπηρεσίας' Android: layout_width= 'wrap_content' Android: layout_height= 'match_parent'/>Γραμμική διάταξη>
  • Μόλις το κάνετε αυτό, επιστρέψτε στο Κύρια δραστηριότητα τάξη και προσθέστε τον αντίστοιχο κωδικό για να συνδέσετε το αρχείο XML και το αρχείο MyServiceClass.
package com.example.newproject import androidx.appcompat.app.AppCompatActivity public class MainActivity επεκτείνει το AppCompatActivity υλοποιεί το View.OnClickListener {private Button start, stop @Override protected void onCreate (BundleavedInstanceState) {super.onCreate (saveInstanceState) .activity_main) start = (Button) findViewById (R.id.buttonStart) stop = (Button) findViewById (R.id.buttonStop) start.setOnClickListener (this) stop.setOnClickListener (this)} @Override δημόσια άκυρη onClick (Προβολή προβολής ) {if (view == start) {startService (new Intent (this, MyServiceClass.class))} άλλο αν (view == stop) {stopService (new Intent (this, MyServiceClass.class))}}}

Βήμα 4

Μόλις ολοκληρώσετε τη σύνδεση των τάξεων, ας τρέξουμε τον κωδικό.

Σημείωση: Προσθέστε το όνομα κλάσης υπηρεσίας στο αρχείο AndroidManifiest.xml.

Στη συνέχεια, ας τρέξουμε τον κώδικα.

Μόλις ξεκινήσετε την υπηρεσία, θα εκτελείται στο παρασκήνιο ακόμη και αν ανοίξει άλλη εφαρμογή. Μπορείτε να ξεκινήσετε ή να σταματήσετε την υπηρεσία κάνοντας κλικ στα κουμπιά.

Πρόκειται για μια απλή επίδειξη όπου έχετε μάθει πώς να εργάζεστε με τις Υπηρεσίες Android.

Έτσι με αυτό, φτάνουμε στο τέλος αυτού του άρθρου σχετικά με το 'Android Services Tutorial'.Ελπίζω να είστε ξεκάθαροι με τα θέματα που καλύπτονται σε αυτό το ιστολόγιο.

Τώρα που έχετε διαβάσει το ιστολόγιο του Android Services Tutorial, μπορείτε να δείτε το Edureka's για να ξεκινήσετε γρήγορα τη μάθησή σας.

Έχετε απορίες; Μην ξεχάσετε να τα αναφέρετε στα σχόλια αυτού του ιστολογίου 'Android Services Tutorial'. Θα επικοινωνήσουμε μαζί σας.