gpt4 book ai didi

Android MVP 和分析

转载 作者:太空狗 更新时间:2023-10-29 16:12:59 25 4
gpt4 key购买 nike

如何在 MVP 应用架构上应用 Firebase Analytics(例如)? (我使用 Mosby 构建 MVP)

我想跟踪“opening screen”“do click action”的事件。

我如何发送 “打开屏幕” 事件。

private const val ANALYTICS_SCREEN_NAME = "ask_password"
private const val ANALYTICS_ACTION_DONE = "done"
class AskPasswordPresenter : MyDiaryPresenter<AskPasswordView> {

@Inject
constructor(analytics: AnalyticsManager) : super(analytics) // AnalyticsManager is wrapper around Firebase Analytics API

override fun initialize() { // this method called when new ViewState created
super.initialize()
analytics.doScreenOpened(ANALYTICS_SCREEN_NAME)
}

fun done(password: String) { // called when user click on 'Done' button
...
analytics.doAction(ANALYTICS_SCREEN_NAME, ANALYTICS_ACTION_DONE)
}
}
  1. doAction(...) 必须调用。好的。

  2. initialize() 即使在用户从后台导航回到屏幕时也会调用。我希望它仅在用户以“正面方向”导航到屏幕时发送事件。它看起来也是一个糟糕的解决方案,因为在第一次创建 ViewState 时引入了用于初始化 Presenterinitialize() 方法,而不是用于日志分析事件。

听起来我必须将 Fragment 的生命周期共享给 Presenter。不好。

你能推荐什么?我是否必须为每个 fragment 创建另一个实体,例如 AnalyticsPresenter?你如何处理这个案子?

最佳答案

在我看来,Analytics 属于 View 层而不是 Presenter 层。所以直接在 Fragment/Activity 中跟踪它,或者(我通常做的)使用像 lightcycle 这样的库之一。或 CompositeAndroid将“分析组件”插入到您的 Activity/fragment 中。通过这样做,您的 Fragment/Activity 不包含 Analytics 的代码,而是分离到它自己的类中(单一责任)。

关于Android MVP 和分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39086865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com