Android ViewPager2 和 TabLayout 的数据加载策略
Android Data Loading Strategy with ViewPager2 and TabLayout
说,我要从网络服务器下载两张数据表,categories
和items
:
data class Category(val id: Long)
data class Item(val id: Long, val name: String, val categoryId: Long)
然后将数据填充到 ViewPager2
和 TabLayout
中,如下所示:
我有两个策略:
策略一:一次请求所有数据,通过代码重组数据(过滤,排序...),然后将相应的数据 (items
) 传递到每个页面 Fragment
.
策略2:为每个页面请求相应的数据(bycategoryId
),即web服务器将进行过滤和排序,每个Fragment
单独请求其数据。
哪种策略更好?提前致谢。
更好是主观的 - 它在很大程度上取决于您要获取的数据以及对您的用户重要的指标。
如果您有少量数据,则在一个 api 调用中获取所有数据并在设备上拆分 - 这更容易思考,也更容易编写代码。写这个也可能会更快,所以如果你想快速发布一些东西,这可能是最好的方法。
但是,如果您尝试一次获取所有数据但数据量很大,那么您的用户将花费大量时间观看加载微调器!在那种情况下,我会在用户要求每个列表时获取数据。
如果您将 Web 服务器的 api 设计得很好,则可以使相同的 api 端点解决这两种方法 - 即 filter/sort 参数可以是可选的。这将允许您构建和发布单次调用方法(通过不向 api 端点传递任何参数并仅获取所有数据)然后,如果这还不够好,您可以发布另一个版本的应用程序过滤服务器端。
说,我要从网络服务器下载两张数据表,categories
和items
:
data class Category(val id: Long)
data class Item(val id: Long, val name: String, val categoryId: Long)
然后将数据填充到 ViewPager2
和 TabLayout
中,如下所示:
我有两个策略:
策略一:一次请求所有数据,通过代码重组数据(过滤,排序...),然后将相应的数据 (items
) 传递到每个页面 Fragment
.
策略2:为每个页面请求相应的数据(bycategoryId
),即web服务器将进行过滤和排序,每个Fragment
单独请求其数据。
哪种策略更好?提前致谢。
更好是主观的 - 它在很大程度上取决于您要获取的数据以及对您的用户重要的指标。
如果您有少量数据,则在一个 api 调用中获取所有数据并在设备上拆分 - 这更容易思考,也更容易编写代码。写这个也可能会更快,所以如果你想快速发布一些东西,这可能是最好的方法。
但是,如果您尝试一次获取所有数据但数据量很大,那么您的用户将花费大量时间观看加载微调器!在那种情况下,我会在用户要求每个列表时获取数据。
如果您将 Web 服务器的 api 设计得很好,则可以使相同的 api 端点解决这两种方法 - 即 filter/sort 参数可以是可选的。这将允许您构建和发布单次调用方法(通过不向 api 端点传递任何参数并仅获取所有数据)然后,如果这还不够好,您可以发布另一个版本的应用程序过滤服务器端。