如何解决如果可能,如何安全快速地初始化演示片段双显示?
我正在制作一个双显示应用(商米T2)。
我使用 Presentation Fragment 作为辅助显示。
(从 Android 8.0 开始,它提供了多个屏幕,但我猜这不是针对一个应用程序而是在运行两个以上不同的应用程序时。对我来说,我需要开发一个像 POS 程序这样的应用程序,我相信使用 Presentation 是正确的方法。)
但问题是 Fragment 的初始化速度比 Activity 慢。我希望它们几乎同时显示。我想,由于 Presentation Class 只是一种 Dialog,它不禁有一些小于 200 毫秒(通常小于 50 毫秒)的延迟。
因此,当第二个显示器(片段)未准备好时,一些从其活动控制片段的方法会导致触摸屏问题。(当您触摸第二个显示器时,它就像触摸其主要在第二个显示器上显示但冻结的 UI。
例如
// this can cause the problem.
fun showItemList(adapter: ItemAdapter) {
binding.rcv = adapter
}
// this doesn't cause the problem. But I am not sure if this is the right solution. (I guess some method will not work properly)
fun showItemList(adapter: ItemAdapter) {
if (!this::binding.isInitialized) {
return
}
binding.rcv = adapter
}
我像这样控制 Activity 上的片段
preso?.showItemList(mAdapter) // preso is the fragment
有人说我可以使用'by lazy'进行绑定。但我不确定这是否也是正确的解决方案,因为片段必须在活动之后初始化,如果我使用惰性,片段中的绑定可能能够在数据准备好之前更早初始化。
如果没有比第一个检查 this::binding.isInitialized
的解决方案更好的方法,那么您能否告诉我一些解决方案来删除每个方法中的冗余语法?
我正在做的是...
fun aMethod() {
if (!this::binding.isInitialized) {
return
}
// TODO:
}
fun bMethod() {
if (!this::binding.isInitialized) {
return
}
// TODO:
}
fun cMethod() {
if (!this::binding.isInitialized) {
return
}
// TODO:
}
...
正如你所见,它看起来并不干净。
我期望这样。但必须在绑定未初始化时结束该方法。
fun aMethod() {
// TODO:
}
fun bMethod() {
// TODO:
}
fun cMethod() {
// TODO:
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。