diff --git a/README.md b/README.md index 0836398..2ae622d 100644 --- a/README.md +++ b/README.md @@ -232,37 +232,8 @@ You could use `DebugDrawer` or `DebugView` depending on your needs } ``` -### 2. Lifecycle -If you use `NetworkModule`, `LocationModule`, `FpsModule` or your own which is hooked with BroadcastReceivers you must call `onStart`/`onStop`, `onResume`/`onPause` in your activity +### 2. `TimberModule` -```java - - @Override - protected void onStart() { - super.onStart(); - debugDrawer.onStart(); - } - - @Override - protected void onResume() { - super.onResume(); - debugDrawer.onResume(); - } - - @Override - protected void onPause() { - super.onPause(); - debugDrawer.onPause(); - } - - @Override - protected void onStop() { - super.onStop(); - debugDrawer.onStop(); - } -``` - -### 3. `TimberModule` Don't forget to plant needed log trees in Application class. Tree that is used by `TimberModule` stored in `LumberYard` class. Application class example: diff --git a/debugdrawer/src/main/java/io/palaima/debugdrawer/DebugDrawer.java b/debugdrawer/src/main/java/io/palaima/debugdrawer/DebugDrawer.java index e964136..25a0c36 100644 --- a/debugdrawer/src/main/java/io/palaima/debugdrawer/DebugDrawer.java +++ b/debugdrawer/src/main/java/io/palaima/debugdrawer/DebugDrawer.java @@ -30,6 +30,7 @@ import android.widget.ScrollView; import io.palaima.debugdrawer.base.DebugModule; +import io.palaima.debugdrawer.util.DebugDrawerLifecycleCallbacks; import io.palaima.debugdrawer.util.UIUtils; import io.palaima.debugdrawer.view.DebugView; import io.palaima.debugdrawer.view.ScrimInsetsFrameLayout; @@ -399,6 +400,9 @@ public void onDrawerStateChanged(int newState) { //create the result object DebugDrawer result = new DebugDrawer(this); + //register a lifecycle callback for start, stop, pause and resume events + activity.getApplication().registerActivityLifecycleCallbacks(new DebugDrawerLifecycleCallbacks(activity, result)); + //forget the reference to the activity activity = null; diff --git a/debugdrawer/src/main/java/io/palaima/debugdrawer/util/DebugDrawerLifecycleCallbacks.java b/debugdrawer/src/main/java/io/palaima/debugdrawer/util/DebugDrawerLifecycleCallbacks.java new file mode 100644 index 0000000..d8badac --- /dev/null +++ b/debugdrawer/src/main/java/io/palaima/debugdrawer/util/DebugDrawerLifecycleCallbacks.java @@ -0,0 +1,62 @@ +package io.palaima.debugdrawer.util; + +import android.app.Activity; +import android.app.Application; +import android.os.Bundle; + +import io.palaima.debugdrawer.DebugDrawer; + +public class DebugDrawerLifecycleCallbacks implements Application.ActivityLifecycleCallbacks { + private Activity mActivity; + private DebugDrawer mDebugDrawer; + + public DebugDrawerLifecycleCallbacks(Activity activity, DebugDrawer debugDrawer) { + mActivity = activity; + mDebugDrawer = debugDrawer; + } + + @Override + public void onActivityCreated(Activity activity, Bundle savedInstanceState) { + + } + + @Override + public void onActivityStarted(Activity activity) { + if (mActivity == activity) { + mDebugDrawer.onStart(); + } + } + + @Override + public void onActivityResumed(Activity activity) { + if (mActivity == activity) { + mDebugDrawer.onResume(); + } + } + + @Override + public void onActivityPaused(Activity activity) { + if (mActivity == activity) { + mDebugDrawer.onPause(); + } + } + + @Override + public void onActivityStopped(Activity activity) { + if (mActivity == activity) { + mDebugDrawer.onStop(); + } + } + + @Override + public void onActivitySaveInstanceState(Activity activity, Bundle outState) { + + } + + @Override + public void onActivityDestroyed(Activity activity) { + mActivity.getApplication().unregisterActivityLifecycleCallbacks(this); + mActivity = null; + mDebugDrawer = null; + } +}