Usługi powiązane i uprawnienia
779
jesteś tutaj
¨
OdometerService
¨
MainActivity
¨
Usługi lokalizacyjne
Użycie metody unbindService()
do odłączenia aktywności od usługi
W przypadku odłączania aktywności od usługi kod wykonujący
tę operację umieszczany jest zazwyczaj w metodzie
onStop()
lub
onDestroy()
aktywności. Wybór metody zależy od miejsca,
w którym umieściliśmy wywołanie metody
bindService()
:
W naszym przykładzie powiązanie aktywności
MainActivity
z usługą
OdometerService
utworzyliśmy w metodzie
onStart()
aktywności, więc
operację odłączenia musimy wykonać w metodzie
onStop()
.
Odłączenie aktywności od usługi sprowadza się do wywołania metody
unbindService()
. Wymaga ona przekazania jednego parametru: obiektu
ServiceConnection
. Oto kod, który musimy dodać do aktywności
MainActivity
(dodamy go do pliku MainActivity.java kilka stron dalej):
@Override
protected void onStop() {
super.onStop();
if (bound) {
unbindService(connection);
bound = false;
}
}
W powyższym kodzie używamy zmiennej
bound
, by sprawdzić, czy
odłączenie usługi jest konieczne, czy nie. Jeśli zmienna ta ma wartość
true
, oznacza to, że aktywność
MainActivity
jest powiązana z usługą
OdometerService
. W takim przypadku musimy odłączyć aktywność
i przypisać zmiennej
bound
wartość
false
.
Jak na razie dysponujemy aktywnością, która podczas uruchamiania
tworzy powiązanie z usługą, a następnie, kiedy zostaje zatrzymana,
odłącza tę usługę. Ostatnią operacją, którą musimy wykonać, jest
wywołanie w kodzie aktywności
MainActivity
metody
getDistance()
usługi
OdometerService
i wyświetlenie zwróconej przez nią wartości.
MainActivity
OdometerService
To wywołanie używa obiektu
ServiceConnection do odłączenia
aktywności od usługi.
app/src/main
Main
Activity.java
Drogomierz
java
com.hfad.drogomierz
Jeśli utworzenie powiązania zostało wykonane w metodzie
onStart()
, to aktywność należy odłączać w metodzie
onStop()
.
Jeśli utworzenie powiązania zostało wykonane w metodzie
onCreate()
, to aktywność należy odłączać w metodzie
onDestroy()
.
Po odłączeniu aktywności przypisujemy
zmiennej bound wartość false.
Get Android Programowanie aplikacji. Rusz głową! Wydanie II now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.