展示Android JetPack进展的最佳实践?
我们应该异步初始化ViewModel。从本地SQLite数据库直接加载数据可能非常快(但并不总是如此)。如果我们从某个远程源提取数据,可能会有相当明显的延迟。所以用户需要一些关于它的视觉反馈,主用户界面必须不可用 当数据准备用于ViewModel或发送一些数据进行处理(等待ViewModel中的更改)时,显示进度的最佳做法是什么 例如,如果LiveData值为null,则切换到加载进度片段,并在那里准备ViewModel,并在准备就绪时切换回?但是ViewModel使用绑定到特定片段 只是在加载/处理数据时使某些根视图不可见?换句话说,在每个片段中添加一些进度部分来显示它,而不是主要内容? 但是这种方法需要太多的样板代码来处理很多布局 如果我们知道数据几乎是立即加载的,我们是否应该对此加以注意展示Android JetPack进展的最佳实践?,android,user-interface,android-architecture-components,android-jetpack,long-running-processes,Android,User Interface,Android Architecture Components,Android Jetpack,Long Running Processes,我们应该异步初始化ViewModel。从本地SQLite数据库直接加载数据可能非常快(但并不总是如此)。如果我们从某个远程源提取数据,可能会有相当明显的延迟。所以用户需要一些关于它的视觉反馈,主用户界面必须不可用 当数据准备用于ViewModel或发送一些数据进行处理(等待ViewModel中的更改)时,显示进度的最佳做法是什么 例如,如果LiveData值为null,则切换到加载进度片段,并在那里准备ViewModel,并在准备就绪时切换回?但是ViewModel使用绑定到特定片段 只是在加载
如何在JetPack应用程序中处理长时间运行的操作界面?我在官方文档和示例中找到了答案。 以下是两个部分:
<data>
<variable
name="isLoading"
type="boolean" />
</data>
因为它是应用程序定义的属性,所以我们必须在某个地方注意它。因此,应该有支持visibleGone的适配器:
当然,我们可以使用FrameLayout之类的工具,放置一些进度面板,使控件变得模糊,并显示一些滚动的进度轮(而不是简单地隐藏它并显示空屏幕)。
但问题是,对于每个片段布局,您都必须注意它。如果你有一些复杂的屏幕(如标签),它只会使你的代码更加复杂
结论:#2或多或少是可行的解决方案。尽管我更喜欢在所有情况下使用一些单独的进度片段屏幕,并且不会因为加载进度和错误处理内容而使我的每个片段布局变得臃肿
但是,我不禁要问,使用LiveData的真正好处是什么?为了通过良好的错误处理、进度反馈正确地完成工作,我们需要维护太多的样板代码。
他们根据自己的指南主张权利:
在上面推荐的应用程序架构部分,我们省略了网络
错误和加载状态以保持代码段简单
因为LiveData的设计似乎不是为了便于进度和错误处理
app:visibleGone="@{isLoading}"
public class BindingAdapters {
@BindingAdapter("visibleGone")
public static void showHide(View view, boolean show) {
view.setVisibility(show ? View.VISIBLE : View.GONE);
}
}