Estoy implementando un cliente REST en Android. He visto un ejemplo de usar un Service
para realizar la conexión al servidor y el ResultReceiver
para recibir notificación de la finalización de la operación. Estoy llamando al servicio desde un fragmento y, si trato de rotar la pantalla mientras el servicio se está ejecutando, el método getActivity() en ResultReceiver
devuelve nulo porque probablemente ese fragmento ya no está en el diseño.ResultReceiver no supera la rotación de pantalla
El método de devolución de llamada en el fragmento:
@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);
}
}
}
Los getActivity()
devuelve null. ¿Es esto normal? ¿Qué enfoque podría usar para permitir la notificación incluso en la rotación de la pantalla? Transmisión local?
Gracias por la respuesta. En realidad, preferiría no configurar la propiedad screenOrientation en el manifiesto porque el diseño es diferente en el modo horizontal, por lo que no puedo configurarlo. – Matroska