我正在为Android开发一个小型A / B测试库。库只会在应用程序类中初始化。我需要更改TextView值。
我将存储从文件中提取的所有数据。但是我无法跟踪TextView何时进入视图并移动它。 例如,TextView A在X Activity中,TextView B在Y Activity中,TextView C在Z Activity中。由于我的变量是Context,我应该如何更改TextView A,B,C值。
我需要确定哪些活动是可见的。从Activity我将能够获得root视图。我将迭代子视图并改变价值。但我应该如何倾听活动变化。
还有其他方法吗?
我知道这是可能的,因为许多A / B测试库正在这样做。
答案 0 :(得分:2)
在这里,请查看Here
上的答案正如您所提到的,通过AppContext挂钩活动生命周期回调是最好的开始方式。从那里,您将获得您可能需要的所有信息。每次活动切换时,您都会拥有Activity对象,然后您可以从中获取根视图并根据需要应用更改。
我会建议不要对视图进行迭代!如果你有rootview,你可以在该根视图上执行findViewId(textview C id),然后你就可以抓住你的视图了!
答案 1 :(得分:1)
由于您正在构建库,因此可以公开一个函数,该函数可以在每个活动的onCreate之后调用,这将为您提供活动的参考。一旦你有了这个活动,你就可以获得它的根视图并做你想做的任何魔术。
如果您不想为活动注册LifeCycle回调,那么这是唯一的其他方法。应用程序至少在某个时间点需要进入您的库。您可以手动执行应用程序(上面的方法),也可以覆盖所有活动的所有生命周期事件(注册生命周期回调)。