我的第一个问题是我应该将 BroadcastReceiver 类放在整洁的架构项目中的哪里? (现在我把它放在数据层中)
我的项目包定义如下
├──data
└──repositories
├──di
├──domain
└── repository
└── use_cases
├──presentation
├──utils
我的第二个问题是如何按照整洁的架构将 BroadcastReceiver 类中收到的数据发送/获取到 ViewModel ?
class ResponseReceiver: BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
// received data
}
}
这是 list 文件中的声明
<receiver
android:name=".data.ResponseReceiver"
android:enabled="true"
android:exported="true">
...
</receiver>
最佳答案
您可以将广播接收器放入数据包中。
使用 View 模型和存储库,您可以将广播接收器作为数据源添加到存储库中。从接收器获取数据并将其放入存储库中,并使用 View 模型将其提供给 UI。您可以使用this回答作为一些帮助,但他们遵循的方法是错误的。他们直接在 Activity 中访问存储库,这不是一个好的做法。您必须创建类似的函数才能从接收器获取数据。您将初始化 View 模型并从中访问 UI 中所需的所有内容,而不是在 Activity 内实例化存储库。这是因为你的唯一事实来源是 View 模型,如果你遵循 MVVM,那么它应该是这样的,我会为你的用例推荐这是一个很棒的架构。如果您需要一些代码来可视化,请随时询问。
关于android - 将数据从 BroadcastReceiver 发送到 ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73199900/