# Android SDK 多实例指南
# 一、多实例功能介绍
在 Android SDK 1.3.0 版本中,新增了多 APPID 特性,可以创建多个 SDK 实例,分别对应各自的 APPID 进行数据上报,也就是可以向多个 APPID 进行数据上报。
在 Android SDK 2.1.0 版本中,新增了轻量实例的特性,可以支持对同一 APPID 生成多个子轻量实例,子轻量实例与父实例的 APPID 一致,但账号等信息不一致。
如果您将老版本(1.3.0 之前的版本)SDK 升级至 1.3.0 之后的版本,如果老版本 SDK 本地缓存还有未上报的数据,那么将会直接上报到第一个实例化的 APPID 中。对于只使用一个 APPID 实例的用户而言,数据不会有任何影响。
# 二、如何创建多 SDK 实例
传入不同的 APP ID 完成 SDK 初始化,即可创建多个 SDK 实例:
// 初始化 SDK
ThinkingAnalyticsSDK instance1 = ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID, TA_SERVER_URL);
ThinkingAnalyticsSDK instance2 = ThinkingAnalyticsSDK.sharedInstance(this, ANOTHER_TA_APP_ID, TA_SERVER_URL);
instance1.track("some_event",properties);
instance2.track("some_event",properties);
请注意多个 SDK 实例的 APP ID 必须不同,多实例之间的大多数数据是不共通的,详情可参考第四节“多实例间的数据、设置共享”。
# 三、创建轻实例
在 Android SDK 2.1.0 版本中,您可以通过轻实例的方式,创建同一个 APPID 下的多个实例
//首先创建一个SDK实例
ThinkingAnalyticsSDK instance = ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID, TA_SERVER_URL);
//通过之前创建的实例,调用createLightInstance生成轻实例
ThinkingAnalyticsSDK lightInstance = instance.createLightInstance();
lightInstance.login("anotherAccount");
lightInstance.track("some_event",properties);
子轻量实例与父实例的 APPID、上报地址以及部分设置一致,但其他信息不共享,详情可参考第四节“多实例间的数据、设置共享”。
# 四、多实例间的数据、设置共享
大多数接口都是由实例对象所调用,因此绝大部分数据与设置在多 APPID 实例、父实例与轻量实例间是不共享的,但有部分数据与设置会对所有实例生效,以下是所有数据与设置在多实例间是否共享的详细说明:
- 账号相关信息
- 系统默认生成的访客 ID
#distinct_id
:共享 - 调用
identify
设置的访客 ID#distinct_id
:不共享 - 调用
login
设置的账号 ID#account_id
:不共享
事件上报
track
与用户属性上报user_set
、user_setOnce
、user_add
、user_delete
:不共享公共属性
setSuperProperties
和动态公共属性setDynamicSuperPropertiesTracker
:不共享SDK 配置信息是否在多实例之间共享:
- 上报策略相关(即上报的间隔时间与每批次数据量):共享,由第一个实例化的 APPID 对应的项目数据决定
- 上传的网络条件
setNetworkType
:共享 - 打印上传数据 Log
EnableTrackLogging
:共享
- 自动采集事件
- 建议只在一个实例上开启自动采集事件
- 支持向多个 APP ID 上报自动采集事件
- 自动采集事件的相关配置是否在多实例共享:
- 设置控件 ID
setViewID
:不共享 - 自定义控件属性
setViewProperties
等:不共享 - 忽略某个页面的自动采集事件
ignoreAutoTrackActivity
等:不共享 - 忽略某个类型控件的点击事件
ignoreViewType
:不共享 - 忽略某个控件
ignoreView
:不共享 - 所有的注解:可以通过设置 appId 参数指定生效的实例。如果不设置,则所有实例共享该配置,如:
@ThinkingDataIgnoreTrackAppViewScreen(appId = "debug-appid")
- 设置控件 ID
- 记录事件时长
timeEvent
:不共享