読者です 読者をやめる 読者になる 読者になる

うな(。・ε・。)

Android, iOS, AppEngine まわりのめもめも

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 のコードだけを読んだ際に自明ではありません。

飛び道具なので用法容量を守りましょう。(*´ω`*)