/**
*
*/
package by.istin.android.xcore.service;
import android.os.Bundle;
import android.os.Handler;
import android.os.ResultReceiver;
/**
* @author IstiN
*
*/
public abstract class StatusResultReceiver extends ResultReceiver {
public static final String ERROR_KEY = "xcore:error_key";
public static final String RESULT_KEY = "xcore:result_key";
public static enum Status {
ADD_TO_QUEUE, START, CACHED, ERROR, DONE
}
public StatusResultReceiver(Handler handler) {
super(handler);
}
@Override
protected void onReceiveResult(int resultCode, Bundle resultData) {
Status status = Status.values()[resultCode];
switch (status) {
case ADD_TO_QUEUE:
onAddToQueue(resultData);
break;
case START:
onStart(resultData);
break;
case CACHED:
onCached(resultData);
break;
case DONE:
onDone(resultData);
break;
case ERROR:
onError((Exception)resultData.getSerializable(ERROR_KEY));
break;
default:
break;
}
super.onReceiveResult(resultCode, resultData);
}
protected void onCached(Bundle resultData) {
}
protected void onAddToQueue(Bundle resultData) {
}
public abstract void onStart(Bundle resultData);
public abstract void onDone(Bundle resultData);
public abstract void onError(Exception exception);
}