CachingActivityMapper
如果要求两次或更多次Place
,则会返回相同的活动实例。但是,PlaceController
如果我PlaceChangeRequestEvent
的地方与当前地点相等,则不会触发PlaceChangeEvent
(最终没有goTo(...)
)。因此,听取这些事件的ActivityManager
将无法执行任何操作,也就是说,在这种情况下,它甚至不会向CachingActivityMapper
询问活动。
所以,我并没有真正看到CachingActivityMapper
的观点。我错过了什么吗?
答案 0 :(得分:4)
CachingActivityMapper
很少(没有)使用。这真的意味着在FilteredActivityMapper
和ActivityMapper
之间。
原始用例是主要细节;例如,对于邮件应用程序,有2 ActivityManager
个,一个用于邮件列表(主邮件),另一个用于特定邮件(详细信息),我们可以想象第三个用于菜单或树视图;让我们专注于 master :
MailBox("inbox")
FilteredActivityMapper
将该地点按原样传递给基础CachingActivityMapper
ActivityMapper
返回“收件箱”Message(box="inbox", id="123")
FilteredActivityMapper
将地点转换为MailBox("inbox")
CachingActivityMapper
返回缓存的活动,而不实际调用已包装的ActivityMapper
;因此,ActivityManager
不会停止并启动活动,也不会触及HasOneWidget
正在管理的活动。可能存在变体,例如, detail 映射器可以缓存它看到的最后一个消息位置(其中消息的地方不会' t包含“邮箱”信息,即Message("123")
),当它收到 MailBox 的地方时,它会将消息地方传递给基础{{ 1}},它将返回缓存的活动;这将允许主更改为新的邮箱,同时仍然在详细信息面板中显示相同的消息(带分割显示的GMail的行为或多或少与此类似)。 / p>