Files
yusheng-android/BaseModule/src/main/java/com/xscm/moduleutil/base/AppStateManager.java
2025-11-07 09:22:39 +08:00

113 lines
2.9 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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<Activity> 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;
}
}