ActivityLifecycleCallbacks で view イベントを自動でログる
ActivityLifecycleCallbacks は Activity のライフサイクルを監視して、処理を挟み込める機構です。
使い方は至って単純で、Application.ActivityLifecycleCallbacks
を implement し、Application
のインスタンスメソッド registerActivityLifecycleCallbacks()
を呼ぶだけ。
public class YourApplication extends Application implements Application.ActivityLifecycleCallbacks { @Override public void onCreate() { super.onCreate(); registerActivityLifecycleCallbacks(this); } @Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) { final Bundle logArgs = new Bundle(); logArgs.putString("screen", activity.getClass().getSimpleName()); someTracker.track("view", logArgs); } }
全ての Activity に対して、コールバックが発動する事に注意します。
BaseActivity との違い?
こういった使い方では、BaseActivity
に色々処理を書くよりも、ActivityLifecycleCallbacks
のほうが継承レースにならなくて良いと思います。
「共通処理」というよりは、「ライフサイクルを監視して何かする」ときに嬉しいです。
ですから、「EventBus に register, unregister する」「ButterKnife.inject() する」とかはやめた方が良いと思います。Activity のコードだけを読んだ際に自明ではありません。
飛び道具なので用法容量を守りましょう。(*´ω`*)