using System;
using UniRx;
namespace TimeManager
{
///
/// 统一 Tick 服务实现 - 管理秒级和分钟级的定时器。
/// 构造时即启动 Interval;须在业务启动链中显式 Resolve<TimeRefreshManager>()(如 ActivityManager.Init 开头),以挂上跨天/跨小时逻辑。
/// Stop 后需再调 Start() 恢复。
///
public class TimeTickService : ITimeTickService, IDisposable
{
private IObservable _secondTick;
private IObservable _minuteTick;
private bool _isStarted;
public TimeTickService()
{
EnsureStarted();
}
public IObservable SecondTick => _secondTick;
public IObservable MinuteTick => _minuteTick;
public void Start() => EnsureStarted();
private void EnsureStarted()
{
if (_isStarted) return;
_secondTick = Observable.Interval(TimeSpan.FromSeconds(1f));
_minuteTick = Observable.Interval(TimeSpan.FromMinutes(1f));
_isStarted = true;
}
public void Stop()
{
_secondTick = null;
_minuteTick = null;
_isStarted = false;
}
public void Dispose()
{
Stop();
}
}
}