0

我使用MVP。我在视图中显示和关闭进度对话框,并从演示器中的 firebase/firestore 检索数据,使用回调将数据传递给视图。

但是加载数据时,进度对话框会在 UI 中冻结。从firebase/firestore获取数据时,是否有任何方法可以使进度对话框保持旋转?

在视图中显示对话框:

progressDialog = Utils.showProgressDialog(getContext(), getString(R.string.progress_msg_loading));
menuListPresenter.getMenuList(currentStore.getId());

在演示者中加载数据:

@Override
public void getMenuList(String companyId) {
    this.companyId = companyId;
    if (Utils.isNullOrEmpty(companyId)) {
        view.onError(Constants.EMPTY_FIRESTORE_RESULT);
    } else {
        DocSnippets.getInstance().listenProductStatus(companyId, this);
    }
}

传递数据以在演示者中查看:

@Override
public void onProductStatusChanged(ArrayList<Product> products) {
    if (products != null && products.size() > 0) {
        view.menuOnChanged(products);
    }
}

在视图中关闭对话框:

@Override
public void menuOnChanged(ArrayList<Product> products) {
    if (progressDialog != null && progressDialog.isShowing()) progressDialog.dismiss();
    // other code
}
4

1 回答 1

0

我认为您应该在处理结果时在演示者中使用后台线程。

并且您应该runOnUiThread()在演示者发送的视图侧更新上使用方法。这只是为此建议的方式。

于 2018-10-15T06:32:54.630 回答