Android官方架构组件介绍之应用(四)

讲一个项目常见的功能,友盟统计功能

例如一个项目有很多多modlue,每个里面modlue都有Activity,Activity需要友盟统一,Fragment也需要友盟统计。一般做法就是继承一个BaseActivity,BaseFragment。

然后在BaseActivity,BaseFragment大概是这样的

import android.support.v7.app.AppCompatActivity;

public class BaseActivity extends AppCompatActivity {

    @Override
    protected void onStart() {
        super.onStart();
        MobclickAgent.onPageStart(getPageName(this));
    }

    @Override
    protected void onStop() {
        super.onStop();
        MobclickAgent.onPageEnd(getPageName(this));
    }
}

但是如果你们代码,引入了其他的AAR代码,他们aar里面有Activity,但是你也该不了别人代码,但是你们需要统计他们Activity,这个时候怎么办?

public class ActivityLifecycleMonitorCallback implements Application.ActivityLifecycleCallbacks {
    private static final boolean DEBUG = AppEnv.bAppdebug;
    private static final String TAG = DEBUG ? "ActivityLifecyMonitor" : ActivityLifecyMonitor.class.getSimpleName();

    @Override
    public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
        if (DEBUG) {
            Log.i(TAG, getPageName(activity) + " onActivityCreated  activity="+activity.hashCode());
        }
    }

    @Override
    public void onActivityStarted(Activity activity) {
        if (DEBUG) {
            Log.i(TAG, getPageName(activity) + " onActivityStarted");
        }
        MobclickAgent.onPageStart(getPageName(activity));
 
    }

    @Override
    public void onActivityResumed(Activity activity) {
        if (DEBUG) {
            Log.i(TAG, getPageName(activity) + " onActivityResumed");
        }
        MobclickAgent.onResume(activity);
    }

    @Override
    public void onActivityPaused(Activity activity) {
        if (DEBUG) {
            Log.i(TAG, getPageName(activity) + " onActivityPaused");
        }
        MobclickAgent.onPause(activity);
    }

    @Override
    public void onActivityStopped(Activity activity) {
        if (DEBUG) {
            Log.i(TAG, getPageName(activity) + " onActivityStopped");
        }
        MobclickAgent.onPageEnd(getPageName(activity));
    }

    @Override
    public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
        if (DEBUG) {
            Log.i(TAG, getPageName(activity) + " onActivitySaveInstanceState");
        }
    }

    @Override
    public void onActivityDestroyed(Activity activity) {
        if (DEBUG) {
            Log.i(TAG, getPageName(activity) + " onActivityDestroyed  activity="+activity.hashCode());
        }
    }

    private String getPageName(Activity activity) {
        return activity.getClass().getName();
    }


}

然后在Application里面注册

 private void registerActivityLifecycleCallback(Application application) {
        ActivityLifecycleMonitorCallback  activityLifecycleMonitor = new ActivityLifecycleMonitorCallback();
        application.registerActivityLifecycleCallbacks(activityLifecycleMonitor);
    }

 

转载于:https://www.cnblogs.com/mingfeng002/p/9379015.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值