从Firebase / Firestore检索数据时ProgressDialog冻结

时间:2018-10-15 06:27:47

标签: android firebase google-cloud-firestore progressdialog

我使用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
}

1 个答案:

答案 0 :(得分:0)

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

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