小编Max*_*lov的帖子

应该如何在多模块 Android 项目中使用 Anvil

我将在我的项目中使用Anvil

https://github.com/square/anvil

但我无法弄清楚它所需的使用模式是什么?我应该有一个全局AppScope:core并将每个模块的所有绑定合并:feature到其中吗?因此,每个:feature模块都将其绑定添加到AppScope中,因此每个模块都:feature知道有关任何其他模块的一切:feature。这听起来很混乱,对吗?

我没有看到任何有依赖范围的可能性。例如,MyFeatureScope依赖于AppScope。因此,只有特定:feature模块实际上将其绑定贡献到MyFeatureScope中,但它们仍然可以使用AppScope中的通用绑定。

  • Anvil是否支持其范围之间的此类依赖关系?

  • 我应该有一个全局AppScope吗?或者我应该有一组独立的作用域 - 每个:feature模块一个 - 可以以某种方式依赖于带有“公共绑定”的AppScope

android square dagger-2 anvil-di

7
推荐指数
1
解决办法
744
查看次数

为什么我们需要将 DI 接线与 Android 多模块化架构中的实现分开?

Square Inc. 在 Droidcon SF'19 上展示了其内部模块化架构:

https://www.droidcon.com/media-detail?video=380843878

但是,我对一些子弹有点困惑。请你帮助我好吗?

  1. 为什么他们实际上需要:wiring模块?我发现它增加了复杂性:
  • 你会为每个新功能获得额外的 gradle 模块

  • 你必须作出一种全球性注入到您的片段在某处:app,因为碎片在定义:impl模块不能访问它的DaggerComponent,这是在定义:impl-wiring模块。:impl不依赖于:impl-wiring,因为依赖是相反的。

  • 你不能有一个 Android 动态功能模块,因为他们应该知道它是DaggerComponent以便注入它的Fragment。但是没有办法从:app模块进行这种注入,这是动态功能的基本模块。

那么为什么是:wiring模块呢?

可以将:impland:impl-wiring:fakeand合并:fake-wiring在一起以消除上述所有问题。而且,在:demo-apps一个可能只是对依赖要么:impl:fake``, and not on :IMPL接线(or:假wiring```)。

android square dagger-2

5
推荐指数
1
解决办法
86
查看次数

如何获得满足隐式意图的活动数量?

我正在使用隐式意图来打开画廊以选择图像。我通常会执行以下操作:

Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI)
    .takeIf { it.resolveActivity(activity.packageManager) != null }
    ?.let {
        val intent = Intent.createChooser(it, "Choose gallery")
        activity.startActivityForResult(intent, rc)
    }
Run Code Online (Sandbox Code Playgroud)

但是,如果该意图仅通过我设备上的单个应用程序解决,并且没有其他图库应用程序,只有一个应用程序,则选择器将仅显示无用的单个选择。

我如何确定是否有许多活动可以解决该意图?如何获得实际适合的活动数​​量?因此,决定是否显示选择器

android android-intent

3
推荐指数
1
解决办法
37
查看次数

给定具有字符串 id 的 Storefront.Product 节点,如何获取 Admin API 的 ProductId

我正在使用适用于 Android 的 GraphQL shopify buy-sdk,并通过字符串 id 获取产品的节点,例如:

"id" -> "Z2lkOi8vc2hvcGlmeS9Qcm9kdWN0LzEwMDcyMDgwOTc1"
Run Code Online (Sandbox Code Playgroud)

这是节点 ID

但要获取产品元字段,我必须向 Admin API 发出请求

https://SHOP.myshopify.com/admin/products/{productId}/metafields.json
Run Code Online (Sandbox Code Playgroud)

其中 {productId} 是产品的数字 ID,例如:

6243834538
Run Code Online (Sandbox Code Playgroud)

我无法在 REST API 请求中使用节点 ID,收到 400“错误请求”。

所以问题是- 如何在 GraphQL 中获取节点的数字产品 id?

谢谢!

shopify shopify-app

0
推荐指数
1
解决办法
1352
查看次数