WooCommerce Rest Api Android 库问题(Woodroid)
Posted
技术标签:
【中文标题】WooCommerce Rest Api Android 库问题(Woodroid)【英文标题】:WooCommerce Rest Api Android Library Issue (Woodroid) 【发布时间】:2020-12-24 05:01:23 【问题描述】:我正在使用woodroid library 将数据从我的wordpress woocommerce 网站获取到我的android 应用程序中,遵循this。现在这个库只能一起检索所有数据,然后我可以显示它。但我不知道为什么我的应用程序以这种方式加载数据非常慢。所以我需要通过使用下面的代码一一获取值(作为示例产品)来加快流程,
val allProducts : MutableLiveData<Product> by lazy
woocommerce = Woocommerce.Builder().setSiteUrl(baseURL)
.setApiVersion(Woocommerce.API_V2)
.setConsumerKey(consumerKey)
.setConsumerSecret(consumerSecret)
.build()
preLoadProducts()
MutableLiveData<Product>()
private fun preLoadProducts()
val productFilter = ProductFilter()
productFilter.page = pageNum
productFilter.per_page = 1
loadProducts(productFilter)
private fun loadProducts(productFilter: ProductFilter)
woocommerce.ProductRepository().products(productFilter).enqueue(object :
Callback<List<Product>>
override fun onResponse(call: Call<List<Product>>, response: Response<List<Product>>)
try
val productsResponse = response.body()
allProducts.value = productsResponse?.get(0)
pageNum ++
preLoadProducts()
catch (e : Exception)
e.printStackTrace()
allProducts.value = null
override fun onFailure(call: Call<List<Product>>, t: Throwable)
t.printStackTrace()
allProducts.value = null
)
现在我明白这不是实现这一目标的最有效方法,但它对我有用(几乎)。 所以我需要一个更好、更有效的解决方案。如果有人有任何想法,请帮忙。 谢谢
【问题讨论】:
【参考方案1】:这和我做的很接近
我建议使用库paging
这个库会做任何事情
另外,为了节省内存,使用 rxjava 或 coroutines for kotlin 这也有帮助
查看这段 Java 代码,它向您展示了如何以灵活的方式获取完整的数据,从而节省内存
@GET("wp-json/wc/v3/coupons?")
Observable<ArrayList<Coupons>> get_List_Codes( @Query("page") int page, @Query("consumer_key") String consumer_key
, @Query("consumer_secret") String consumer_secret);
Observable<ArrayList<Coupons>> getPageAndNext(int c)
return ClientApi.getInstance().get_List_Codes(count)
) )
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.computation())
.concatMap(obsOld->
if (obsOld.size() == 0)
return Observable.just(obsOld);
else
count ++;
return Observable.zip(Observable.just(obsOld)
,getPageAndNext(count),(product11, product22) ->
product11.addAll(product22);
return product11;
);
);
【讨论】:
以上是关于WooCommerce Rest Api Android 库问题(Woodroid)的主要内容,如果未能解决你的问题,请参考以下文章
WooCommerce REST API - 按修改日期过滤订单
php facetwp woocommerce rest api check