package com.yidianling.avchatkit.common.dialog; import android.content.Context; import android.content.DialogInterface.OnCancelListener; import android.text.TextUtils; import com.yidianling.avchatkit.common.log.LogUtil; import java.lang.ref.WeakReference; public class DialogMaker { private static WeakReference<EasyProgressDialog> sProgressDialogRef; public static EasyProgressDialog showProgressDialog(Context context, String message) { return showProgressDialog(context, null, message, true, null); } public static EasyProgressDialog showProgressDialog(Context context, String message, boolean cancelable) { return showProgressDialog(context, null, message, cancelable, null); } @Deprecated public static EasyProgressDialog showProgressDialog(Context context, String title, String message, boolean canCancelable, OnCancelListener listener) { EasyProgressDialog dialog = getDialog(); if (dialog != null && dialog.getContext() != context) { // maybe existing dialog is running in a destroyed activity cotext we should recreate one dismissProgressDialog(); dialog = null; LogUtil.e("dialog", "there is a leaked window here,orign context: " + dialog.getContext() + " now: " + context); } if (dialog == null) { dialog = new EasyProgressDialog(context, message); sProgressDialogRef = new WeakReference<>(dialog); } if (!TextUtils.isEmpty(title)) { dialog.setTitle(title); } if (!TextUtils.isEmpty(message)) { dialog.setMessage(message); } dialog.setCancelable(canCancelable); dialog.setOnCancelListener(listener); dialog.show(); return dialog; } public static void dismissProgressDialog() { EasyProgressDialog dialog = getDialog(); if (null == dialog) { return; } sProgressDialogRef.clear(); if (dialog.isShowing()) { try { dialog.dismiss(); } catch (Exception e) { // maybe we catch IllegalArgumentException here. } } } public static void setMessage(String message) { EasyProgressDialog dialog = getDialog(); if (null != dialog && dialog.isShowing() && !TextUtils.isEmpty(message)) { dialog.setMessage(message); } } public static void updateLoadingMessage(String message) { EasyProgressDialog dialog = getDialog(); if (null != dialog && dialog.isShowing() && !TextUtils.isEmpty(message)) { dialog.updateLoadingMessage(message); } } public static boolean isShowing() { EasyProgressDialog dialog = getDialog(); return (dialog != null && dialog.isShowing()); } private static EasyProgressDialog getDialog() { return sProgressDialogRef == null ? null : sProgressDialogRef.get(); } }