package in.srain.cube.app;
import android.os.Bundle;
import android.util.Log;
import in.srain.cube.app.lifecycle.IComponentContainer;
import in.srain.cube.app.lifecycle.LifeCycleComponent;
import in.srain.cube.app.lifecycle.LifeCycleComponentManager;
import in.srain.cube.util.Debug;
/**
* 1. manager the components when move from a lifetime to another
*
* @author http://www.liaohuqiu.net
*/
public abstract class XActivity extends CubeFragmentActivity implements IComponentContainer {
private LifeCycleComponentManager mComponentContainer = new LifeCycleComponentManager();
private static final boolean DEBUG = Debug.DEBUG_LIFE_CYCLE;
@Override
protected void onRestart() {
super.onStart();
mComponentContainer.onBecomesVisibleFromTotallyInvisible();
if (DEBUG) {
showStatus("onRestart");
}
}
@Override
protected void onPause() {
super.onPause();
mComponentContainer.onBecomesPartiallyInvisible();
if (DEBUG) {
showStatus("onPause");
}
}
@Override
protected void onResume() {
super.onResume();
mComponentContainer.onBecomesVisibleFromPartiallyInvisible();
if (DEBUG) {
showStatus("onResume");
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (DEBUG) {
showStatus("onCreate");
}
}
@Override
protected void onStop() {
super.onStop();
mComponentContainer.onBecomesTotallyInvisible();
if (DEBUG) {
showStatus("onStop");
}
}
@Override
protected void onDestroy() {
super.onDestroy();
mComponentContainer.onDestroy();
if (DEBUG) {
showStatus("onDestroy");
}
}
@Override
public void addComponent(LifeCycleComponent component) {
mComponentContainer.addComponent(component);
}
private void showStatus(String status) {
final String[] className = ((Object) this).getClass().getName().split("\\.");
Log.d("cube-lifecycle", String.format("%s %s", className[className.length - 1], status));
}
}