Wdrażam klienta REST w systemie Android. Widziałem przykład użycia Service
do wykonania połączenia z serwerem i ResultReceiver
, aby otrzymać powiadomienie o zakończeniu operacji. Wywołuję usługę z fragmentu i jeśli spróbuję obrócić ekran podczas działania usługi, metoda getActivity() w ResultReceiver
zwraca wartość null, ponieważ prawdopodobnie ten fragment nie jest już w układzie.ResultReceiver nie przetrwał do rotacji ekranu
Sposób zwrotna we fragmencie:
@Override
public void onReceiveResult(int resultCode, Bundle resultData) {
Response response = (Response) resultData
.getSerializable(RestService.RESULT);
if (resultCode == RestService.SUCCESS
&& response != null) {
if (getActivity() != null) {
recommendationResponse = response;
getLoaderManager().restartLoader(0, new Bundle(),
Fragment.this);
}
}
}
W getActivity()
powraca null. Czy to normalne? W jaki sposób mogę zezwolić na powiadomienia nawet przy obrocie ekranu? Lokalne transmisje?
Dzięki za odpowiedź. Właściwie wolałbym nie ustawiać manifestu screenOrientation, ponieważ układ jest inny w trybie poziomym, więc nie mogę tego ustawić. – Matroska