package com.xscm.moduleutil.base; import android.app.Activity; import com.xscm.moduleutil.bean.room.RoomInfoResp; import java.lang.ref.WeakReference; /** *@author qx *@data 2025/9/20 *@description: 应用状态管理的单例类 */ // 在 common 模块中 public class AppStateManager implements AppStateListener { private static AppStateManager instance; private boolean isAppInBackground = true; private boolean shouldShowSplash = true; private WeakReference roomActivityRef; private boolean isFloatingWindowVisible = false; private boolean isRoomActivityMinimized = false; private AppStateManager() { // 私有构造函数 } public static synchronized AppStateManager getInstance() { if (instance == null) { instance = new AppStateManager(); } return instance; } @Override public boolean shouldShowSplash() { return shouldShowSplash; } @Override public void setShouldShowSplash(boolean shouldShow) { this.shouldShowSplash = shouldShow; } @Override public boolean isAppInBackground() { return isAppInBackground; } @Override public void setAppInBackground(boolean inBackground) { this.isAppInBackground = inBackground; } @Override public void onRoomActivityCreated(Activity roomActivity) { roomActivityRef = new WeakReference<>(roomActivity); } @Override public void onRoomActivityDestroyed() { roomActivityRef = null; } @Override public boolean isRoomActivityActive() { Activity activity = getRoomActivity(); return activity != null && !activity.isFinishing(); } private Activity getRoomActivity() { return roomActivityRef != null ? roomActivityRef.get() : null; } @Override public void setFloatingWindowVisible(boolean visible) { this.isFloatingWindowVisible = visible; } @Override public boolean isFloatingWindowVisible() { return isFloatingWindowVisible; } @Override public void onAppForeground() { // 应用进入前台时的处理 setAppInBackground(false); } @Override public void onAppBackground() { // 应用进入后台时的处理 setAppInBackground(true); } // 新增方法:设置RoomActivity为最小化状态 public void setRoomActivityMinimized(boolean minimized) { this.isRoomActivityMinimized = minimized; } // 新增方法:检查RoomActivity是否处于最小化状态 public boolean isRoomActivityMinimized() { return isRoomActivityMinimized; } private RoomInfoResp roomInfoResp; public void setRoomInfo(RoomInfoResp roomInfoResp) { // 处理RoomInfoResp对象 this.roomInfoResp = roomInfoResp; } public RoomInfoResp getRoomInfo() { return roomInfoResp; } }