package cm.android.framework.component;
import android.content.Context;
import cm.android.framework.client.core.LogUtil;
import cm.android.framework.client.core.StateHelper;
public abstract class BaseBinderServer implements IBinderServer {
protected Context context;
private CoreReceiver coreReceiver = new CoreReceiver() {
@Override
public void restore() {
startService();
}
};
@Override
public final void onCreate(Context context) {
LogUtil.getLogger().info("onCreate");
if (this.context != null) {
return;
}
this.context = context;
try {
create(this.context);
startService();
} finally {
coreReceiver.register(this.context);
}
}
@Override
public final void onDestroy() {
LogUtil.getLogger().info("onDestroy");
if (this.context == null) {
return;
}
coreReceiver.unregister(context);
try {
stopService();
destroy();
} finally {
this.context = null;
}
}
@Override
public boolean isActive(Context context) {
return StateHelper.isActive(context);
}
protected abstract void create(Context context);
protected abstract void destroy();
protected abstract void startService();
protected abstract void stopService();
}