数据层是包含有关应用的一般信息的地图。它使用一组标准的键,因此理解该规范的任何一方都可以读取它。数据层状态通过其 API 进行更新。例如,应用可能会包含以下 dataLayer:
{ title: "Original screen title" }由于应用的状态/数据可能会发生变化,因此,此应用可以通过如下调用来更新 dataLayer:
dataLayer.push(DataLayer.mapOf("title", "New screen title"));现在,数据层包含:
{ title: "New screen title" }再次推送后:
dataLayer.push(DataLayer.mapOf("xyz", 3));dataLayer 包含:
{ "title": "New screen title", "xyz": 3 }以下示例演示了数组和地图合并的运作方式。如果原始 dataLayer 包含:
{ "items": ["item1", null, "item2", {"a": "aValue", "b": "bValue"}] }在此推送完成后:
dataLayer.push("items", DataLayer.listOf(null, "item6", DataLayer.OBJECT_NOT_PRESENT, DataLayer.mapOf("a", null)));dataLayer 包含:
{ "items": [null, "item6", "item2", {"a": null, "b": "bValue"}] }
推送会同步进行;推送之后,更改会反映在模型中。
将 event
键推送到数据层后,系统会评估代码的规则,然后触发与此事件匹配的所有代码。
例如,假设某个容器的一个代码的触发规则是“event”等于“openScreen”,在推送之后:
dataLayer.push("event", "openScreen");,系统将触发该代码。
字段摘要
public static final Object | OBJECT_NOT_PRESENT | 在 List 中使用的此类型的值会导致列表在合并时稀疏;就好像该索引中没有任何元素一样。 |
公共方法摘要
对象 |
get(String 键)
|
static List<Object> |
listOf(Object... 对象)
|
static Map<Object, Object> |
mapOf(Object... 对象)
|
void |
push(Map<Object, Object> update)
|
void |
字段
public static final 对象 OBJECT_NOT_PRESENT
在 List 中使用的此类型的值会导致列表在合并时稀疏;就好像该索引中没有任何元素一样。
公共方法
public 对象 get (String key)
返回模型中与给定键关联的对象。如果未找到密钥,则返回 null
。
键可以嵌入英文句点。例如:在模型中,键为 "a.b.c"
的键在映射中返回一个键为 "c"
的映射,在键为 "b"
的映射中返回键为 "a"
。
public static List<Object> listOf (Object... objects)
用于创建列表的实用程序方法。
例如,以下代码会创建一个包含 "object1"
和 "object2"
的列表:
List<Object> list = DataLayer.listOf("object1", "object2");
public static Map<Object, Object> mapOf (Object... objects)
用于创建地图的实用程序方法。这些参数应为键值对。
例如,以下代码会创建一个映射,将 "key1"
映射到 "value1"
,将 "key2"
映射到 "value2"
:
Map<Object, Object> map = DataLayer.mapOf("key1", "value1", "key2", "value2");
抛出
IllegalArgumentException | 如果存在奇数个参数, |
public void push (Map<Object, Object> update)
将给定的 update
对象合并到现有数据模型中,并使用更新调用任何监听器(合并发生后)。
如果要表示缺失值(例如 List 中的空索引),请使用 OBJECT_NOT_PRESENT
对象。
如果另一个线程正在执行推送,则此调用会阻塞,直到该线程完成。
这通常是同步调用。不过,如果在线程执行推送时,同一线程又执行了一次推送,那么第二次推送是异步的(第二次推送将在对数据层进行更改之前返回)。例如,如果为响应代码触发而执行数据层推送,就会发生来自同一线程的第二次推送。
如果 update
包含 event
键,则系统会对规则进行评估,并触发匹配的标记。
参数
update | 要处理的更新对象 |
public void push (Object key, Object value)
将数据键值对推送到数据层。这只是一种调用 push(DataLayer.mapOf(key, value))
的便捷方法。