这里所说的Dialog全局是指无论当前应用是处于哪一个页面上,都能够及时弹出Dialog来提示用户一些信息。
它有什么用呢?比如:告诉用户你被踢下线了。告诉用户你的网络出问题了。要是一些管理单片机的Android上位机,还可以提示单片机给触发了报警(比如我就是这方面的)。等等!所以用途非常广泛。
想要实现无论当前应用是处于哪一个页面上,都能够及时弹出Dialog功能其实很简单,只要能获取到当前显示的Activity就行了,也就是栈顶的Activity。
实现过程 :
1.一般项目中我们都会通过一个类来管理我们的Activity,即AppManager
public class AppManager {
private Stack<WeakReference<BaseActivity>> mStack;
/**
* 单例静态内部类
*/
private static final class SingletonHodler {
private static final AppManager INSTANCE = new AppManager();
}
private AppManager() {
mStack = new Stack<>();
}
public static AppManager getInstance() {
return SingletonHodler.INSTANCE;
}
/**
* 添加activity
*
* @param activity act
*/
public void addActivity(BaseActivity activity) {
WeakReference<BaseActivity> weakReference = new WeakReference<>(activity);
mStack.add(weakReference);
}
/**
* activity出栈
* 同时结束指定类名的activity
*
* @param cls 类对象
*/
public void