Samouczek dotyczący usług systemu Android: jak uruchomić aplikację w tle?



Ten samouczek dotyczący usług systemu Android pomaga zrozumieć, jak wykonywać operacje w tle, takie jak odtwarzanie muzyki. Nie ma dołączonego żadnego interfejsu użytkownika

Często korzystasz z wielu aplikacji na smartfonie, możesz chcieć przełączyć się z jednej aplikacji na drugą, ale także upewnić się, że wszystkie aplikacje pozostaną aktywne w tle. To nic innego jak usługi oferowane przez . Dlatego ten artykuł dotyczący samouczka usług systemu Android pomoże Ci zrozumieć, jak pracować z usługami.

Omówię następujące tematy:





Co to są usługi Android?

Obsługa to w zasadzie proces. Usługa Android to komponent działający w tle w celu wykonaniadługotrwałe operacje bez interakcji z użytkownikiem i działa nawet po zniszczeniu aplikacji.Inny składnik aplikacji może uruchomić usługę i będzie nadal działać w tle, nawet jeśli przełączysz się na inną aplikację.

Ponadto składnik może wiązać się z usługą w celu interakcji z nią, a także wykonywania komunikacji międzyprocesowej.



Uwaga: Android.app.Service jest podklasą klasy ContextWrapper, a usługa systemu Android nie jest wątkiem ani oddzielnym procesem.

Cykl życia usług Android

Cykl życia usług systemu Android może mieć dwie formy usług. Cykl życia usługi przebiega dwoma różnymi ścieżkami, a mianowicie:

  1. Zaczęło się
  2. Uwiązany

Zaczęło się



Usługa jest uruchamiana, gdy wywoływany jest składnik aplikacji uruchomić usługę () metoda. Uruchomiona usługa może działać w tle przez czas nieokreślony, nawet jeśli komponent odpowiedzialny za uruchomienie zostanie zniszczony. Jest zatrzymywany za pomocą stopService () metoda. Usługa może również zatrzymać się, wywołując plik stopSelf () metoda.

Uwiązany

Usługa jest powiązana, gdy składnik aplikacji wiąże się z nią przez wywołanie bindService () . Usługa powiązana oferuje interfejs klient-serwer, który umożliwia komponentom interakcję z usługą, wysyłanie żądań i uzyskiwanie wyników. Przetwarza w komunikacji międzyprocesowej (IPC). Klient może usunąć powiązanie usługi, wywołując plik unbindService () metoda.

Talend open studio do samouczka integracji danych

Cykl życia usługi Android - samouczek dotyczący usług systemu Android - Edureka

Przechodząc do następnej sekcji tego artykułu o usługach systemu Android, omówmy różnemetody w klasie usług.

Samouczek dotyczący usług systemu Android: metody

Istnieje kilka metod, za pomocą których można łatwo wykonywać operacje na dowolnej aplikacji. Niektórzy z nich są:

metodaOpis
onStartCommand ()

Ta metoda jest wywoływana, gdy jakikolwiek inny komponent, na przykład działanie, żąda uruchomienia usługi przez wywołanie uruchomić usługę () .

Twoim obowiązkiem jest zatrzymanie usługi, gdy odpowiednia praca zostanie wykonana przy użyciu stopSelf () lub stopService () metody.

unbind ()

Wywołuje tę metodę, gdy inny składnik chce powiązać się z usługą przez wywołanie bindService () .

Aby to zaimplementować, musisz zapewnić interfejs, którego klienci będą używać do komunikowania się z usługą. Zwraca IBinder obiekt. Jeśli nie chcesz zezwolić na wiązanie, wróć zero .

onUnbind ()

System wywołuje tę metodę, gdy wszyscy klienci są odłączeni od określonego interfejsu opublikowanego przez usługę.

onRebind ()

Wywołuje tę metodę, gdy nowi klienci są podłączeni do usługi po wcześniejszym powiadomieniu, że wszyscy są rozłączeni onUnbind (zamiar) .

onCreate ()

System wywołuje tę metodę, gdy usługa jest tworzona jako pierwsza przy użyciu onStartCommand () lub unbind () . Wymagane jest wykonanie jednorazowej konfiguracji.

onDestroy ()

Ta metoda jest wywoływana, gdy usługa nie jest już używana i jest niszczona. Twoja usługa powinna to wdrożyć, aby wyczyścić wszelkie zasoby, takie jak wątki, zarejestrowane nasłuchiwania, odbiorniki itp.

Kod szkieletu

public class MainActivity rozszerza Activity {private TextView textView private BroadcastReceiver receiver = new BroadcastReceiver () {@Override public void onReceive (Context context, Intent intent) {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, 'Pobieranie zakończone. Pobierz URI:' + string, Toast.LENGTH_LONG) .show () textView.setText ('Pobieranie zakończone')} else {Toast.makeText (MainActivity.this, 'Download failed', Toast.LENGTH_LONG) .show () textView.setText ('Download failed')}}}} @Override public void onCreate (BundleainedInstanceState) {super.onCreate (saveInstanceState) setContentView (R.layout.activity_main) textView = (TextView) findViewById (R.id.status)} @Override protected void onResume () {super.onResume ) registerReceiver (receiver, new IntentFilter (DownloadService.NOTIFICATION))} @Override protected void onPause () {super.onPause () unregisterReceiver (receiver)} public void onClick (View view) {Intent intent = new Intent (this, DownloadService.class) // dodaj informacje o usłudze, który plik pobrać i gdzie store intent.putExtra (DownloadService.FILENAME, 'index.html') intent.putExtra (DownloadService.URL, 'www.edureka.co') startService (intent) textView.setText ('Usługa rozpoczęta')}}

W tym przykładzie możesz zobaczyć metody takie jak onCreate () , onResume () , onPause () . Te metody tworzą strukturę usług w systemie Android.

A teraz przechodząc do praktycznej części tego samouczka usług systemu Android, zobaczmyjak stworzyć usługę i obsługiwać ją.

Próbny

Zobaczmy, jak odtwarzać muzykę w tle. Aby to zrobić, użyję Andriod Studio .

Krok 1

Utwórz nowy pusty projekt. Nazwij swój projekt i kliknij folder Java, a następnie kliknij Główna aktywność . Najpierw dodaj Odtwarzacz multimedialny abyś mógł zaimportować szczegóły odtwarzacza, takie jak start, ustawianie pętli i tak dalej.

pakiet com.example.mydemoapplication import androidx.appcompat.app.AppCompatActivity klasa publiczna MainActivity extends AppCompatActivity {@Override protected void onCreate (Bundle ZapisaneInstanceState) {super.onCreate (saveInstanceState) setContentView (R. Medialayout.activityPlayer) (this, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()}}

Uwaga: jeśli używasz go po raz pierwszy, nie zapomnij włączyć systemu BIOS. Możesz to zrobić, ponownie uruchamiając system.

Będziesz musiał dodać urządzenie wirtualne. Wystarczy kliknąć Otwórz menedżera AVD.

Wybierz swoje urządzenie i gotowe!

Działa to tylko wtedy, gdy ekran jest aktywny, ale aby aplikacja działała nawet w tle, musisz dodać kilka dodatkowych wierszy kodu w activity_main.xml plik.

Krok 2

Po uruchomieniu odpowiedniego kodu będziesz mógł uruchomić aplikację i będziesz mógł odtwarzać muzykę w tle, tj. Jeśli zostanie otwarta jakakolwiek inna aplikacja, ten dźwięk będzie nadal odtwarzany.

Zobaczmy, jak można to zrobić.

  • Utwórz inną klasę w folderze Java i nadaj jej nazwę. Tutaj nazwałem to „ MyService ”.
  • Ta klasa rozszerza klasę Service.
  • Gdy masz już metody klasy Service, zaimplementuj metody, klikając alt + Enter.
  • Następnie musisz nadpisać metody. Kliknij prawym przyciskiem myszy okno, aby uzyskać opcje.
  • Wygeneruj metody zastępowania, wybierz onStartCommand () , i OnDestroy ().
  • Edytuj plik onStartCommand () metody poprzez dodanie następującego kodu:
MediaPlayer player = MediaPlayer.create (this, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()

Uwaga: Usuń ten kod w Główna aktywność.

  • Spowoduje to wyświetlenie błędu z prośbą o usunięcie instrukcji. Usuń więc instrukcję return i zadeklaruj MediaPlayer jako metodę prywatną i zwróć START_STICKY . Spowoduje to zwrócenie statusu początkowego.
  • Dodaj player.stop () w onDestroy () metoda.

Krok 3

Iść do wołowina i przejdź do układów, kliknij android_main.xml aby pobrać plik XML aplikacji.

  • Usuń TextView i zastąp go LinearLayout i Dodaj Buttons. Dodaj odpowiedni kod.
<LinearLayout android:orientacja= „pionowy” android: szerokość_układu= 'match_parent' android: wysokość_układu= 'wrap_content' android: layout_centerVertical= „prawda” przybory:ignorować= 'MissingConstraints'><Przycisk android:ID= „@ + id / buttonStart” android:tekst= 'Uruchom usługę' android: szerokość_układu= 'wrap_content' android: wysokość_układu= 'match_parent'/><Przycisk android:ID= „@ + id / buttonStop” android:tekst= „Zatrzymaj usługę” android: szerokość_układu= 'wrap_content' android: wysokość_układu= 'match_parent'/>LinearLayout>
  • Gdy to zrobisz, wróć do Główna aktywność class i dodaj odpowiedni kod, aby połączyć plik XML i rozszerzenie MyServiceClass.
pakiet com.example.newproject import androidx.appcompat.app.AppCompatActivity klasa publiczna MainActivity extends AppCompatActivity implementuje View.OnClickListener {private Button start, stop @Override chronione void onCreate (Bundle saveInstanceState) {super.onCreate (setContoutViewStentate) .activity_main) start = (Button) findViewById (R.id.buttonStart) stop = (Button) findViewById (R.id.buttonStop) start.setOnClickListener (this) stop.setOnClickListener (this)} @Override public void onClick (Widok widoku ) {if (view == start) {startService (new Intent (this, MyServiceClass.class))} else if (view == stop) {stopService (new Intent (this, MyServiceClass.class))}}}

Krok 4

Gdy zakończysz łączenie klas, uruchommy kod.

Uwaga: dodaj nazwę klasy usługi w pliku AndroidManifiest.xml.

Następnie uruchommy kod.

Po uruchomieniu usługa będzie działać w tle, nawet jeśli otwarta jest inna aplikacja. Możesz uruchomić lub zatrzymać usługę, klikając przyciski.

To jest proste demo, w którym nauczyłeś się pracować z usługami Android.

Tym samym dochodzimy do końca artykułu „Samouczek dotyczący usług systemu Android”.Mam nadzieję, że masz jasność co do tematów poruszanych na tym blogu.

Po przeczytaniu naszego bloga z samouczkami dotyczącymi usług dla systemu Android możesz zajrzeć na stronę Edureka aby szybko rozpocząć naukę.

Masz jakieś pytania? Nie zapomnij wspomnieć o nich w komentarzach na blogu „Samouczek usług Androida”. Wrócimy do Ciebie.