反复切换用户和下发的数据,报错reason:"xxx not fonund"
victorfan336 opened this issue · comments
在上报用户数据的情况下,反复切换用户和下发的数据,偶现报错,拿到的valueDetail 中的reason:"xxx not fonund"。
具体步骤如下:
获取的参数为Boolean,假设默认参数已设置生效,可选数值可选有:true和false。App获取改参数只会在启动的时候获取一次。
1.用户未登录的情况下,点击进入App,获取Fp数据,此时实例化的FeatureProbe中的user为User(),因未登录未传任何参数,获取参数正常,为true。
2.点击App登录后,重新实例化FeatureProbe,其中的的user传递了用户id,手机号,性别。
3.切换下发的数据为false,杀死应用。
4.点击App重新进入App,获取参数为false,正常,此时用户为登录状态。
5.切换下发的数据为true,杀死应用。
6.点击App重新进入App,获取参数报错'xxx not found"。
次报错是偶现,属于容易出现。
代码如下:
`object FeatureProbeUtil {
private const val REMOTE_URL = "https://xxx/server"
private var featureProbe = getFpInstance()
private fun getFpInstance() = FpUrlBuilder(REMOTE_URL).build()?.let {
val key = App.instance.packageManager.getApplicationInfo(
App.instance.packageName,
PackageManager.GET_META_DATA,
).metaData.getString("FEATURE_PROBE_KEY") ?: ""
FeatureProbe(FpConfig(it, key, 1800u, 0u), generalUser())
}
// 用户切换登录状态后,会调用改方法,以更新上报的用户信息
fun updateFeatureProbe(): FeatureProbe? {
featureProbe = getFpInstance()
return featureProbe
}
fun getModeState(updateFp: Boolean = false) {
App.instance.threadPool.execute {
val fp = featureProbe?.takeIf { !updateFp } ?: updateFeatureProbe() ?: return@execute
val testMode = fp.boolDetail("test_Mode", false)
}
}
// 次方法调用后偶现报错
private fun generalUser() = FpUser().apply {
UserService.user?.takeIf { UserService.isLogin }?.let {
with("id", "${it.id}")
with("nick", it.nick ?: "")
with("phone", it.phone ?: "")
}
}
}`