我想返回List<Product>
作为结果值而不会阻塞,怎么办?
public static List<Product> getProducts(@NonNull Context context){
ProductDataSource.getInstance(context).readProducts(new IProductDataSource.IReadProductsCallback() {
@Override
public void onSuccess(List<Product> result) {
return result; // error in here
}
@Override
public void onFailure() {
return null; // error in here
}
});
}
答案 0 :(得分:0)
您需要为调用方法提供某种回调。例如:
interface Callback {
void onProductsRetrieved(List<Product> products)
void onProductsRetrieveError()
}
public static void getProducts(@NonNull Context context, Callback callback) {
ProductDataSource
.getInstance(context)
.readProducts(new IProductDataSource.IReadProductsCallback() {
@Override
public void onSuccess(List<Product> result) {
callback.onProductsRetrieved(result)
}
@Override
public void onFailure() {
callback.onProductsRetrieveError()
}
});
}
请注意,getProducts
的返回类型已更改为void
,并且添加了Callback
作为参数。
或者,您也可以直接传递IProductDataSource.IReadProductsCallback
:
public static void getProducts(@NonNull Context context, IProductDataSource.IReadProductsCallback callback) {
ProductDataSource.getInstance(context).readProducts(callback);
}