An easy approach for this is to use a callback, but you can also send an event to your activity using any event infrastructure or using a local broadcast of events, for example:
to send an event, you should use something like:
private void sendMessage() {
Intent intent = new Intent("event-networkerror");
intent.putExtra("message", "data");
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
}
To sign up for an event:
public void onResume() {
super.onResume();
LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,
new IntentFilter("event-networkerror"));
}
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String message = intent.getStringExtra("message");
Log.d("receiver", "Got message: " + message);
}
};
protected void onPause() {
LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver);
super.onPause();
}
You can use ErrorHandler to send a broadcast:
class MyErrorHandler implements ErrorHandler {
public Throwable handleError(RetrofitError cause) {
Response r = cause.getResponse();
Intent intent = new Intent("event-networkerror");
intent.putExtra("status",r.getStatus());
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
return cause;
}
}
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint("...")
.setErrorHandler(new MyErrorHandler())
.build();
Felix source
share