我使用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
}
答案 0 :(得分:0)
我认为您在处理结果时应该在演示者中使用背景线程。
并且您应该在演示者发送的视图侧更新中使用runOnUiThread()
方法。这只是为此建议的方法。