This commit is contained in:
zlzw 2024-07-04 13:44:39 +08:00
parent acf20107c1
commit cff607eabb

View File

@ -1,34 +1,31 @@
package com.yunbao.common.utils;
import android.app.Activity;
import android.content.Context;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
import com.yunbao.common.CommonAppContext;
import com.yunbao.common.bean.BaseModel;
import com.yunbao.common.bean.MessageSayHiBean;
import com.yunbao.common.bean.MessageSayHiStartBean;
import com.yunbao.common.bean.MessageUserInfoBean;
import com.yunbao.common.dialog.MessageChatNotifyDialog;
import com.yunbao.common.dialog.MessageSayHiNotifyDialog;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.interfaces.OnItemClickListener;
import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
public class MessageSayHiNotifyManager {
private static final String TAG = "打招呼定时器";
private static MessageSayHiNotifyManager instance;
private Timer timer = null;
private Handler timer = new Handler(Looper.getMainLooper());
private boolean isInit = false;
private boolean isStopShow = false;
private boolean isShowDialog = false;
private boolean isRun = false;
private boolean isCancelDialog = true;
private Runnable runnable;
private MessageSayHiBean hiBean;
private List<MessageUserInfoBean> startListNotifyList = new ArrayList<>();
private String lastActivity;
@ -53,12 +50,11 @@ public class MessageSayHiNotifyManager {
return;
}
isCancelDialog = data.isCancelDialog();
timer = new Timer();
timer.schedule(createTask(), data.getNextTime() * 1000L);
hiBean = new MessageSayHiBean();
hiBean.setModel("init");
hiBean.setNextTime(data.getNextTime());
hiBean.setOldTime(data.getNextTime());
timer.postDelayed(createTask(), data.getNextTime() * 1000L);
Log.i(TAG, "onSuccess: 初始化定时器,第一轮时间:" + data.getNextTime());
}
@ -83,13 +79,12 @@ public class MessageSayHiNotifyManager {
Log.i(TAG, "onSuccess: 定时器为关,不再轮训 " + data);
return;
}
if (data.getStatus() == 0) {
timer = new Timer();
timer.schedule(createTask(), data.getNextTime() * 1000L);
return;
}
data.setOldTime(hiBean.getNextTime());
hiBean = data;
if (data.getUser() == null || data.getStatus()==0) {
timer.postDelayed(createTask(), data.getNextTime() * 1000L);
return;
}
Log.i(TAG, "onSuccess: 展示弹框时间:" + data);
showDialog();
}
@ -110,17 +105,16 @@ public class MessageSayHiNotifyManager {
return;
}
if (hiBean == null) return;
Log.i(TAG, "reload: 重载定时器当前Activity:" + AppManager.getInstance().getLastActivity() + "|等待:" + hiBean.getNextTime());
Log.i(TAG, "reload: 重载定时器当前Activity:" + AppManager.getInstance().getLastActivity() + "|等待:" + hiBean);
isStopShow = false;
if (timer != null) {
timer.cancel();
timer.removeCallbacks(runnable);
}
timer = new Timer();
if (hiBean.getStatus() == -2) {
Log.i(TAG, "reload: -2的bean = " + hiBean);
timer.schedule(createTask(), hiBean.getOldTime() * 1000L);
timer.postDelayed(createTask(), hiBean.getOldTime() * 1000L);
} else {
timer.schedule(createTask(), hiBean.getNextTime() * 1000L);
timer.postDelayed(createTask(), hiBean.getNextTime() * 1000L);
}
}
@ -133,41 +127,30 @@ public class MessageSayHiNotifyManager {
}
public void stop() {
Log.i(TAG, "stop: 停止定时器当前Activity:" + AppManager.getInstance().getLastActivity());
Log.i(TAG, "stop: 停止定时器当前Activity:" + AppManager.getInstance().getLastActivity() + "|" + hiBean);
isStopShow = true;
if(hiBean!=null) {
if (hiBean != null) {
hiBean.setStatus(-2);
}
if (timer != null) {
timer.cancel();
timer = null;
timer.removeCallbacks(runnable);
}
}
private TimerTask createTask() {
private Runnable createTask() {
isRun = true;
return new TimerTask() {
runnable = new Runnable() {
@Override
public void run() {
if (timer != null) {
timer.cancel();
}
cancel();
if (hiBean.getStatus() == -2) {
if (hiBean != null && hiBean.getStatus() == -2 && !"init".equals(hiBean.getModel())) {
showDialog();
return;
}
Log.i(TAG, "run: 定时器到点,启动下一轮");
next();
}
@Override
public boolean cancel() {
isRun = false;
Log.i(TAG, "cancel: 定时器内部取消");
return super.cancel();
}
};
return runnable;
}
public void push(Context mContext, MessageUserInfoBean userInfo) {
@ -200,7 +183,7 @@ public class MessageSayHiNotifyManager {
return;
}
if (isStopShow) {
Log.i(TAG, "showDialog: 非目标页面,停止展示");
Log.i(TAG, "showDialog: 非目标页面,停止展示:" + hiBean);
hiBean.setStatus(-2);
lastActivity = null;
isRun = false;
@ -235,8 +218,7 @@ public class MessageSayHiNotifyManager {
Log.i(TAG, "onSuccess: 启动定时器,下一轮时间:" + hiBean.getNextTime() + "");
hiBean.setStatus(1);
timer = new Timer();
timer.schedule(createTask(), hiBean.getNextTime() * 1000L);
timer.postDelayed(createTask(), hiBean.getNextTime() * 1000L);
}).setCancelable(isCancelDialog)
.showDialog();
}