一、一些废话
今天早上快5点的时候才睡的觉,早上不到10点起来就是研究那个Google Analytics。因为新增了一个需求就是希望记录用户的类型,需要用到其中的custom dimension.但是最新版的SDKv4的用法改变了,研究了半天怎么样设置才能正确的把用户类型和hit一起发送出去。然后想了半天怎么设计代码符合DDD。简直是闇。设计好了被mentor说不希望做一个usecase,希望放到commen里作为一个类似util的东西,可是用户类型需要访问infra层,usecase虽然不合适,但是作为util就更不合适嘛!于是下午开完周会之后,和新人三个人一起讨论了怎么设计这个问题,大概讨论了两个小时,日语横飞,我竟然还能听个七七八八,讨论的表达的也都还凑合,可谓今天是正式工作以来第一次感觉爽!但是自己的表达能力还是不行啊,代码写得少遇到的问题也少,要多写多探究!最后研究的结果是先看看能不能override Tracker中自动发送部分的代码,如果这样就好办多了。于是在查看代码的过程中,发现了tracker是注册了ActivityLifecycleCallbacks,然后在回调函数中发送的hit。那这个ActivityLifecycleCallbacks是个啥?官方文档也没写,工作的电脑没电了,我就没看源码,于是就百度了一下,和理解的差不多。
二、正题
下面是ActivityLifecycleCallbacks提供的Callbacks。
abstract void onActivityCreated(Activity activity, Bundle savedInstanceState)
abstract void onActivityDestroyed(Activity activity)
abstract void onActivityPaused(Activity activity)
abstract void onActivityResumed(Activity activity)
abstract void onActivitySaveInstanceState(Activity activity, Bundle outState)
abstract void onActivityStarted(Activity activity)
abstract void onActivityStopped(Activity activity)
那他们是在什么时候被调用呢?就是在activity的生命周期函数中的super.xxx()中调用ActivityLifecycleCallbacks中对应的CallBack。所有的activity都会调用。