终端开发总是会有这样的需求,无论在哪些场景下某种判断成立时候需要弹出通知比如网络断开等情况。类似这样的全局弹窗无非就是系统的dialog或者悬浮窗,悬浮窗的话需要用户开启悬浮窗权限,这里我就只提一下dialog的实现。这也是我在用的一种。
众所周知Android中dialog依赖于activity,所以要显示全局弹窗,最终问题就是获取最上面的activity对象,这就涉及到activity的管理,一般会有在base中建立activity列表维护所有activity,我们这边使用在application生命周期监听函数中处理。
首先这里有一个顶部activity管理的单例类:
public class TopActivityManager {
private static final String TAG = "MyActivityManager";
public static TopActivityManager instance = new TopActivityManager();
private WeakReference<Activity> currentActivityWeakRef;
public TopActivityManager() {
}
public static TopActivityManager getInstance() {
return instance;
}
public Activity getCurrentActivity() {
Activity currentActivity = null;
if (currentActivityWeakRef != null) {
currentActivity = currentActivityWeakRef.get();
}
return currentActivity;
}
publ