如何解决如何从自定义视图进行Api调用?
我正在库模块中构建一个自定义视图,该视图每30秒显示一个问题(从REST Api获取),并允许用户选择一个可能的答案。
我需要在app模块中使用该库。应用模块的MainActivity唯一要做的就是显示视频并在其顶部添加自定义视图。
所有业务和UI逻辑都应在库中处理(从服务器获取问题,处理计时器,处理选定的答案等)
因此,该应用仅包含一个Activity,而库则包含一个CustomView,一个用例,一个存储库和一个ApiService类,用于通过改造来发出Api请求。
由于该库没有ViewModel(因为库模块中没有片段或活动),所以我正在从CustomView执行用例。
CustomView-> UseCase(启动couroutine)->存储库-> RetrofitService
是否有更清洁/正确的方法来执行此操作?有人告诉我,从视图中调用api是一种非常糟糕的做法,但目前我不知道其他任何方法。
解决方法
自定义视图完全不应保存数据。例如,自定义视图无法处理视图重新创建。正确的方法是使用Fragment而不是自定义视图。
,该协同例程异步运行;虽然不从UI线程访问网络,但这不是问题(严格禁止一个人这样做)。改造本身已经在Java中执行异步了,因此我想知道是否需要一个额外的协同例程。在interface
定义的方法中添加关键字suspend
足以使两者一致工作。 LiveData
是更新视图的首选方法,但是在Kotlin中,也可以使用与Java中相同的异步回调。另请参阅:What does the suspend function mean in a Kotlin Coroutine?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。