Sto implementando un client REST in Android. Ho visto un esempio di utilizzo di un Service
per eseguire la connessione al server e lo ResultReceiver
da notificare del completamento dell'operazione. Sto chiamando il servizio da un frammento e, se provo a ruotare lo schermo mentre il servizio è in esecuzione, il metodo getActivity() in ResultReceiver
restituisce null perché probabilmente quel frammento non è più nel layout.ResultReceiver non sopravvive alla rotazione dello schermo
Il metodo di callback nel frammento:
@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);
}
}
}
I getActivity()
restituisce null. È normale? Quale approccio potrei utilizzare per consentire la notifica anche sulla rotazione dello schermo? Trasmissione locale?
Grazie per la risposta. In realtà preferirei non impostare screenOrientation su manifest perché il layout è diverso in modalità landscape, quindi non posso impostarlo. – Matroska