在生命周期方法中是有activity对象
的,这样也可以拿到全路径
作为唯一标示;
示例:
public static void registerActivityLifecycleCallbacks(Application application) {
application.registerActivityLifecycleCallbacks(new Application.ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity, Bundle bundle) {
}
@Override
public void onActivityStarted(Activity activity) {
}
@Override
public void onActivityResumed(Activity activity) {
mBeginTime = System.currentTimeMillis();
}
@Override
public void onActivityPaused(Activity activity) {
trackAppViewScreen(activity);
}
@Override
public void onActivityStopped(Activity activity) {
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {
}
@Override
public void onActivityDestroyed(Activity activity) {
}
});
}
在onActivityPaused
的时候我们调用了一下trackAppViewScreen
方法,并传入当前activity
,来看看trackAppViewScreen
方法。
private static void trackAppViewScreen(Activity activity) {
try {
if (activity == null) {
return;
}
if (mIgnoredActivities.contains(activity.getClass().getCanonicalName())) {
return;
}
JSONObject properties = new JSONObject();
//获取页面的参数
if (activity.toString().contains(“SecondActivity”)) {
String userId = activity.getIntent().getStringExtra(“userId”);
properties.put(“userId”, userId);
}
properties.put(“activity”, activity.getClass().getCanonicalName());
SensorsDataAPI.getInstance().track("$AppViewScreen", properties, mBeginTime);
} catch (Exception e) {
e.printStackTrace();
}
}
我们在trackAppViewScreen
方法中创建了JSONObject对象properties
,用来添加我们需要埋点的数据,比如页面的唯一标示key
我们用activity
表示,并取全路径作为value
。
这里有一点需要注意的,我们除了可以收集一些固定参数之外,activity中intent
的参数也是可以获取的,比如其他页面跳转到这个页面传的参数,我们同样可以获取到并作为埋点的参数使用的。
就像上面的SecondActivity,当MainActivity跳转到SecondActivity时传的userId是可以通过getIntent
获取到的。
最后调用了SensorsDataAPI
类的track
方法,继续看
public void track(@NonNull String eventName, @Nullable JSONObject properties, long beginTime) {
try {
JSONObject jsonObject = new JSONObject();
jsonObject.put(“event”, eventName);
// jsonObject.put(“device_id”, mDeviceId);
JSONObject sendProperties = new JSONObject(mDeviceInfo);